我使用 Pandoc 从 markdown 源生成大型 PDF 文件。该文档包含大量无标题的非浮动图像。
在这些情况下,生成的 LaTeX 代码很简单\includegraphics{path/to/file}
。
生成的 PDF 几乎不会在图像和上下段落之间显示任何空白。我看不出在哪里可以使用 Pandoc 变量或模板(例如默认模板或 Eisvogel)为图像设置垂直边距,因为它们只是输出 Pandoc 生成的body
变量。
有没有办法解决此布局问题(除了在 markdown 中插入换行符)?
答案1
如果需要,您可以自动添加环境,例如,向center
每个\includegraphics
未在给定环境中使用的环境添加环境,如figure
,,或:table
center
flushleft
flushright
\documentclass{article}
\usepackage{mwe}
\NewCommandCopy{\savedincludegraphics}{\includegraphics}
\makeatletter
\renewcommand*{\includegraphics}[2][]{%
\expandafter\in@\expandafter{\expandafter,\@currenvir,}%
{,figure,table,center,flushleft,flushright,}%
\ifin@
\savedincludegraphics[{#1}]{#2}%
\else
\begin{center}\savedincludegraphics[{#1}]{#2}\end{center}%
\fi
}
\makeatother
\begin{document}
\blindtext
\includegraphics[scale=.5]{example-image-a}
\blindtext[2]
\begin{figure}[htbp]
\includegraphics[scale=.5]{example-image-b}
\caption{Test (intended to not be centered)}
\end{figure}
\blindtext Next image also should be left aligned.
\begin{flushleft}
\includegraphics[scale=.5]{example-image-c}
\end{flushleft}
\blindtext
\end{document}
我不知道如何pandoc
添加代码
\NewCommandCopy{\savedincludegraphics}{\includegraphics}
\makeatletter
\renewcommand*{\includegraphics}[2][]{%
\expandafter\in@\expandafter{\expandafter,\@currenvir,}%
{,figure,table,center,flushleft,flushright,}%
\ifin@
\savedincludegraphics[{#1}]{#2}%
\else
\begin{center}\savedincludegraphics[{#1}]{#2}\end{center}%
\fi
}
\makeatother
文件序言中提到,但我确信这是可能的。
但请注意:重新定义也有效,例如\includegraphics
在页眉或标题页中使用。
注意:如果你想扩展逗号分隔列表
{,figure,table,center,flushleft,flushright,}
不要忘记开始和结尾的逗号!
注意:如果您在内部使用\includegraphics
,例如,在tabular
a 内部使用,则我对 的重新定义不会识别table
该环境。只有当前的内部环境才能被识别。但您可以定义一个虚拟环境:table
\includegraphics
\newenvironment{dontcenter}{}{}
并将其添加到列表中。因此您可以使用
\begin{dontcenter}\includegraphics{…}\end{dontcenter}
对于其他环境内的所有图像,它们不应该居中。