如何在使用Pandoc将Markdown转换为PDF时强制将图像转换为文本

5
我制作了一个 GitHub wiki - 一个软件包的手册 - 我想把它转换成一个漂亮的pdf手册。然而,我在图片方面遇到了一些问题 - 许多图片被放在了以下页面之一,远离它应该出现的文本位置,这使得文档非常难以阅读。
为此,我基本上按照这里所建议的做法进行操作。基本上的想法是:
  1. 克隆GitHub wiki;

  2. 使用pandoc将markdown文件转换为单个pdf:

    pandoc -s FirstSection.md FirstSection.md FirstSection.md -o manual.pdf

我有一系列短句子,每个句子后面都跟着一个图像(例如在这里看)。当我打开生成的pdf文件时,每个图像都不紧跟在它前面的句子之后,而是我有一系列很多句子和一系列连续的图像,但这使得文档真的很难理解。
有没有一种方法可以强制图像紧跟在它们放置的文本后面,并避免在图像之后出现文本?
我已经找到了一些Rmarkdown的解决方案,但它们对我没有用。
提前感谢!
1个回答

11

Pandoc默认使用LaTeX来进行PDF文件创建

使用外部文件

以下内容放在例如header.tex中:

\makeatletter
\def\fps@figure{h}
\makeatother

或者,以下

\usepackage{float}
\let\origfigure\figure
\let\endorigfigure\endfigure
\renewenvironment{figure}[1][2] {
    \expandafter\origfigure\expandafter[H]
} {
    \endorigfigure
}

然后使用:
pandoc input.md --include-in-header header.tex -o output.pdf

仅使用Markdown文件

或者,您可以将header.tex嵌入到Markdown文件的YAML元数据块中,而无需使用它:

---
header-includes: |
  \makeatletter
  \def\fps@figure{h}
  \makeatother
---

# my markdown header

1
YAML元数据语法可能有所改变。根据文档和我的实际操作,它应该是这样的:--- header-includes: - | ` ```{=latex} \makeatletter \def\fps@figure{h} \makeatother
- Jarno
YAML元数据语法可能有点变化。根据文档和我的实际操作,它应该是:

header-includes: - | ```{=latex} \makeatletter \def\fps@figure{h} \makeatother ```

- Jarno
1
@Jarno,这只是在元数据字段中使用通用原始属性。通常情况下,这是不必要的。但如果您有复杂的LaTeX代码,则可以防止pandoc解析它... - mb21
也许问题只是应该使用 header-includes 而不是 header-include - Jarno
@Jarno,啊,是的...打错了...已经修复! - mb21
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接