Pandoc 生成的 PDF 中的垂直图像间距

Pandoc 生成的 PDF 中的垂直图像间距

我使用 Pandoc 从 markdown 源生成大型 PDF 文件。该文档包含大量无标题的非浮动图像。

在这些情况下,生成的 LaTeX 代码很简单\includegraphics{path/to/file}

生成的 PDF 几乎不会在图像和上下段落之间显示任何空白。我看不出在哪里可以使用 Pandoc 变量或模板(例如默认模板或 Eisvogel)为图像设置垂直边距,因为它们只是输出 Pandoc 生成的body变量。

有没有办法解决此布局问题(除了在 markdown 中插入换行符)?

答案1

如果需要,您可以自动添加环境,例如,向center每个\includegraphics未在给定环境中使用的环境添加环境,如figure,,或:tablecenterflushleftflushright

\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,例如,在tabulara 内部使用,则我对 的重新定义不会识别table该环境。只有当前的内部环境才能被识别。但您可以定义一个虚拟环境:table\includegraphics

\newenvironment{dontcenter}{}{}

并将其添加到列表中。因此您可以使用

\begin{dontcenter}\includegraphics{…}\end{dontcenter}

对于其他环境内的所有图像,它们不应该居中。

相关内容