Pandoc 禁用从 Markdown 到 PDF 转换的图形拉伸
Pandoc disable figure stretching from Markdown to PDF conversion
我使用最简单的 pandoc
命令从 Markdown 文档创建 PDF 文档:
pandoc my.md -o my.pdf
PDF 中的图形均已拉伸,即:100% 宽度。
我应该给 pandoc
什么配置才能在不改变图形大小的情况下保持图形不变。
目前您无法直接从 Markdown 控制该功能。
最近几个月,Pandoc 开发人员和用户社区就如何最好地实现它并创建易于使用的语法进行了一些讨论,例如
{width="60%", height="150px"}
(警告: 仅供示例,是我自己临时编造和凭空得出的——不记得讨论的最新状态...)这旨在然后传输到 所有 支持的输出格式,其中可以包含图像,而不仅仅是 PDF。
所以这计划成为 Pandoc 下一个主要版本的主要新功能。
您可能知道也可能不知道,Pandoc 本身并不创建 PDF。它生成 LaTeX 并使用 LaTeX 技术(默认为 pdflatex
命令)将 LaTeX 转换为 PDF(然后删除中间的 LaTeX 文件)。
为了对 LaTeX/PDF 页面(或其他输出)的外观进行一些(有限的)控制,Pandoc 使用了 模板 文件。您可以查看您自己的 Pandoc 版本用于 运行
输出的 LaTeX/PDF 的确切模板定义
pandoc -D latex
因此,如果您是一名 LaTeX 黑客(或知道一名黑客),您可以对其进行修改或从头开始创建自己的模板。
在当前版本的 Pandoc (v1.13.2.1) 中,LaTeX 模板中有以下代码片段:
\makeatletter
\def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth\else\Gin@nat@width\fi}
\def\maxheight{\ifdim\Gin@nat@height>\textheight\textheight\else\Gin@nat@height\fi}
\makeatother
% Scale images if necessary, so that they will not overflow the page
% margins by default, and it is still possible to overwrite the defaults
% using explicit options in \includegraphics[width, height, ...]{}
\setkeys{Gin}{width=\maxwidth,height=\maxheight,keepaspectratio}
如果适合页面宽度,这应该保留原始图像大小,如果不适合,则将它们缩小到页面宽度。
如果这不是您遇到的 PDF 输出行为,我怀疑您使用的是相当旧的 Pandoc 版本。
要使用您自己的模板而不是内置的内部模板,您可以添加
--template=/path/to/myown-template.latex
到 Pandoc 命令行。
@KurtPfeifle 感谢您的帮助。我更新了乳胶以使用提示为图像设置静态宽度和高度。
在我的乳胶模板中我有:
\setkeys{Gin}{width=128pt,height=192pt,keepaspectratio}
这对移动图像非常有用。但是我还有封面,封面图现在变小了。
我尝试创建 2 个不同的乳胶文件并将它们组合在一起,但图形尺寸又变回拉伸了:
pandoc _cover_page.md -o _cover_page.tex
pandoc ... -template=mobile_images.latex -o remaining.tex
pandoc _cover_page.tex remaining.tex -o out.pdf
是否有一种简单的方法来合并符合 Pandoc 模板的乳胶文件?
我可以创建 2 个 pdf 文件:cover.pdf 和 remaining.pdf,并将它们合并。有没有你知道的简单工具?
我使用最简单的 pandoc
命令从 Markdown 文档创建 PDF 文档:
pandoc my.md -o my.pdf
PDF 中的图形均已拉伸,即:100% 宽度。
我应该给 pandoc
什么配置才能在不改变图形大小的情况下保持图形不变。
目前您无法直接从 Markdown 控制该功能。
最近几个月,Pandoc 开发人员和用户社区就如何最好地实现它并创建易于使用的语法进行了一些讨论,例如
{width="60%", height="150px"}
(警告: 仅供示例,是我自己临时编造和凭空得出的——不记得讨论的最新状态...)这旨在然后传输到 所有 支持的输出格式,其中可以包含图像,而不仅仅是 PDF。
所以这计划成为 Pandoc 下一个主要版本的主要新功能。
您可能知道也可能不知道,Pandoc 本身并不创建 PDF。它生成 LaTeX 并使用 LaTeX 技术(默认为 pdflatex
命令)将 LaTeX 转换为 PDF(然后删除中间的 LaTeX 文件)。
为了对 LaTeX/PDF 页面(或其他输出)的外观进行一些(有限的)控制,Pandoc 使用了 模板 文件。您可以查看您自己的 Pandoc 版本用于 运行
输出的 LaTeX/PDF 的确切模板定义pandoc -D latex
因此,如果您是一名 LaTeX 黑客(或知道一名黑客),您可以对其进行修改或从头开始创建自己的模板。
在当前版本的 Pandoc (v1.13.2.1) 中,LaTeX 模板中有以下代码片段:
\makeatletter
\def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth\else\Gin@nat@width\fi}
\def\maxheight{\ifdim\Gin@nat@height>\textheight\textheight\else\Gin@nat@height\fi}
\makeatother
% Scale images if necessary, so that they will not overflow the page
% margins by default, and it is still possible to overwrite the defaults
% using explicit options in \includegraphics[width, height, ...]{}
\setkeys{Gin}{width=\maxwidth,height=\maxheight,keepaspectratio}
如果适合页面宽度,这应该保留原始图像大小,如果不适合,则将它们缩小到页面宽度。
如果这不是您遇到的 PDF 输出行为,我怀疑您使用的是相当旧的 Pandoc 版本。
要使用您自己的模板而不是内置的内部模板,您可以添加
--template=/path/to/myown-template.latex
到 Pandoc 命令行。
@KurtPfeifle 感谢您的帮助。我更新了乳胶以使用提示为图像设置静态宽度和高度。
在我的乳胶模板中我有:
\setkeys{Gin}{width=128pt,height=192pt,keepaspectratio}
这对移动图像非常有用。但是我还有封面,封面图现在变小了。
我尝试创建 2 个不同的乳胶文件并将它们组合在一起,但图形尺寸又变回拉伸了:
pandoc _cover_page.md -o _cover_page.tex
pandoc ... -template=mobile_images.latex -o remaining.tex
pandoc _cover_page.tex remaining.tex -o out.pdf
是否有一种简单的方法来合并符合 Pandoc 模板的乳胶文件?
我可以创建 2 个 pdf 文件:cover.pdf 和 remaining.pdf,并将它们合并。有没有你知道的简单工具?