我想使用降价围栏 div 呈现两列 pdf 文档。最小的例子是这样的:
:::::::::::::: {.columns data-latex=""}
::: {.column width="40%" data-latex="[t]{0.4\textwidth}"}
contents...
:::
::: {.column width="60%" data-latex="[t]{0.6\textwidth}"}
contents...
:::
::::::::::::::
html 中的渲染是可以的,但显然有人认为乳胶中的多列渲染仅适用于 beamer,因此它不适用于普通乳胶,然后是 pdf。我无法切换到 pandoc 的 html pdf 引擎,因为我的最终文档需要乳胶模板。
minipage latex 环境似乎很方便实现我想要的。经过大量调查后,我得到了这个 lua 过滤器:
local pandocList = require 'pandoc.List'
Div = function (div)
local options = div.attributes['data-latex']
if options == nil then return nil end
-- if the output format is not latex, the object is left unchanged
if FORMAT ~= 'latex' and FORMAT ~= 'beamer' then
div.attributes['data-latex'] = nil
return div
end
local env = div.classes[1]
-- if the div has no class, the object is left unchanged
if not env then return nil end
local returnedList
-- build the returned list of blocks
if env == 'column' then
local beginEnv = pandocList:new{pandoc.RawBlock('tex', '\\begin' .. '{' .. 'minipage' .. '}' .. options)}
local endEnv = pandocList:new{pandoc.RawBlock('tex', '\\end{' .. 'minipage' .. '}')}
returnedList = beginEnv .. div.content .. endEnv
end
return returnedList
end
不幸的是,生成的乳胶文档 ( pandoc --lua-filter ./latex-div.lua -o test.latex test.md
) 如下,由于第一个 minipage 的结尾和第二个 minipage 的开头之间的空白行,它没有按预期呈现:
\begin{document}
\begin{minipage}[t]{0.4\textwidth}
contents\ldots{}
\end{minipage}
\begin{minipage}[t]{0.6\textwidth}
contents\ldots{}
\end{minipage}
\end{document}
我快到了。如何在不重新处理乳胶文件的情况下摆脱这个不需要的空白行?