我對 Lua pandoc 過濾器完全陌生,所以這個問題超出了我的水平。
從一個降價檔案開始,我想收集手稿中的所有圖形,洗掉乳膠呼叫以顯示它們,捕獲它們的標題并將它們顯示在最后一個名為“圖形”的塊中。
例如,圖形在中間 .tex 中呈現為:
\begin{figure}
\includegraphics[width=1\linewidth]{figure1} \caption{Figure 1. Caption.}\label{fig:figure1}
\end{figure}
我想洗掉上述塊,獲取標題并將其移動到具有以下結構的(現有)圖形部分中:
\section*{Figures}
\begin{figure}[h!]
\caption{Figure 1. Caption.}
\end{figure}
\begin{figure}[h!]
\caption{Figure 2. Caption.}
\end{figure}
我想強調的是,最終檔案中不應再顯示這些數字。我將 .tex 發送到的期刊需要這種結構,這需要單獨加載圖片并在手稿中保留對它們的參考。
我嘗試了一些 Lua 編碼,但沒有成功。但后來我發現 lua 根本看不到我的影像。
我把它放到 .md 檔案中:
\begin{figure}
\includegraphics[width=1\linewidth]{figure1} \caption{Figure 1. Caption.}\label{fig:figure1}
\end{figure}
然后嘗試檢查 Lua 是如何看待它的:
function Para (el) print(pandoc.utils.stringify(el)) end
但是沒有列印對影像的參考(列印了其他元素,作為測驗)。我嘗試用 Para 代替 Str、Inline、Image、Pandoc 但沒有。
所以我什至無法在 AST 中捕捉到這個數字......
uj5u.com熱心網友回復:
將原始 LaTeX 放入 R Markdown 輸入的問題在于它不會被 pandoc 處理,而是逐字傳遞。這可能非常有用,但在這種情況下,它限制了 Lua 過濾器的有用性。但是,\begin{figure}...\end{figure}代碼在 pandoc 中變成了“原始塊”,仍然可以通過 Lua 過濾器訪問RawBlock. 您也許可以使用類似于以下的代碼來收集字幕:
local captions = pandoc.List()
function RawBlock (raw)
local caption = raw.text:match('\\caption%{(.*)%}')
if caption then
captions:insert(caption)
end
end
function Pandoc (doc)
-- append collected captions at the end
doc.blocks:insert(captions:map(function(x) return pandoc.Para(x) end))
return doc
end
或者將所有數字放入元資料欄位:
function Pandoc (doc)
doc.meta.figures = captions:map(function (c)
return pandoc.RawBlock('latex', c)
end)
return doc
end
uj5u.com熱心網友回復:
而不是實際移動數字,你可以告訴乳膠在最后顯示標題:
\usepackage{figcaps}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/434590.html
上一篇:發生例外:ModuleNotFoundError即使在pipinstall之后
下一篇:如果值為null,則不執行賦值
