如何使用 pandoc 引用 markdown 中的图形?

Posted

技术标签:

【中文标题】如何使用 pandoc 引用 markdown 中的图形?【英文标题】:How do I make a reference to a figure in markdown using pandoc? 【发布时间】:2012-03-15 03:02:21 【问题描述】:

我目前正在用 Markdown 编写文档,我想引用我的文本中的图像。

this is my text, I want a reference to my image1 [here]. blablabla

![image1](img/image1.png)

我想做那个参考,因为在将我的 markdown 转换为 pdf 之后,图像会放在一两页之后,并且文档没有任何意义。

更新:

我在that post 中尝试过Ryan's answer,但无法正常工作。 显然是代码:

[image]: image.png "Image Title" 
![Alt text][image] 
A reference to the [image](#image).

应该产生:

\beginfigure[htbp] 
\centering 
\includegraphics[keepaspectratio,width=\textwidth,height=0.75\textheight]i mage.png 
\captionAlt text 
\labelimage 
\endfigure 

A reference to the image (\autorefimage).

相反,我得到:

\beginfigure[htbp]
\centering
\includegraphicsimage.png
\captionAlt text
\endfigure

A reference to the \href\#imageimage.

我注意到两个问题:

\labelimage 未出现:未创建引用。 (\autorefimage) 变为 \href\#imageimage:未检测到交叉引用。

然后,当我将其转换为 pdf 时,它显然没有链接到图像。有一个链接,但它没有链接到任何东西。

任何帮助将不胜感激!

【问题讨论】:

你试过groups.google.com/group/pandoc-discuss/msg/4a42442657a96414中提到的方法吗? 我已经对其进行了测试,但它不会产生自动引用。奇怪... 也许你应该编辑你的问题,包括你尝试了什么、你得到了什么和你想要什么(这样更容易帮助你)。 【参考方案1】:

在 pandoc 中你甚至可以这样做:

![This is the caption\labelmylabel](/url/of/image.png)
See figure \refmylabel.

【讨论】:

这仅在您转换为 TeX 时有用,但如果您还想从相同的 Markdown 源创建 html,则无济于事。 有几个过滤器可用于使图形参考适用于所有输出格式pandoc-fignos 和pandoc-cros-s-ref 不幸的是,这不是一种非常灵活的方式。不能以这种方式指定图像的宽度或高度。是否可以以这种方式包含 PDF?如果不是,那也将是一个缺点,因为它在 PDF 中作为输出案例更可取。 可以通过![This is the caption\labelmylabel](/url/of/image.png)width=30px height=20px来设置宽度和高度【参考方案2】:

您可以使用pandoc-fignos 过滤器进行图形编号和引用。它适用于任何输出格式——不仅仅是 LaTeX。

为图像的属性添加标签,如下所示:

 ![Caption.](image.png) #fig:description

...然后像这样引用图:

 @fig:description

有关如何安装和应用 pandoc-fignos 过滤器的信息在其网页上提供。还有pandoc-eqnos 过滤器可以对方程做同样的事情。

【讨论】:

我想和referring to an element of an ordered list做类似的事情 这也适用于 pandoc-cros-s-ref。请参阅@joelostblom 答案。【参考方案3】:

在阅读了类似帖子中的 his answer 后,我与 Ryan Gray 进行了交谈。实际上他的使用解决方案:

[image]: image.png "Image Title" 
![Alt text][image] 
A reference to the [image](#image).

仅在使用 multimarkdown 时进行适配。

对于pandoc,唯一的交叉引用方式就是直接使用latex关键字:

[image]: image.png "Image Title"
![Alt text \labelmylabel][image]
See figure \refmylabel.

【讨论】:

但正如 Jakob 在接受的答案中所说,“这仅在您转换为 TeX 时才有帮助,但如果您还想从相同的 Markdown 源创建 HTML,则无济于事。” 对于multimarkdown,有没有办法通过自动计算的图形编号来引用图形?我想像 [](#image) 之类的东西,然后 multimarkdown 会用数字替换空白文本(就像脚注一样)。【参考方案4】:

Pandoc 支持引用部分(通过 section identifiers 前缀 #)。

对此open issue 的评论描述了以下解决方法如何利用部分标识符在 LaTeX 和 HTML 中生成图像引用:

<div id="fig:lalune">
![A voyage to the moon\labelfig:lalune](lalune.jpg)

</div>

[The voyage to the moon](#fig:lalune).

&lt;/div&gt; 之前的空行是必需的。

【讨论】:

一个合适的解决方案,即extension to pandoc markdown syntax to allow identifiers for pictures 现在终于开始了。敬请期待:)【参考方案5】:

使用pandoc-cros-s-ref,您可以使用以下语法交叉引用图形:

![Caption](file.ext)#fig:label

然后在文本中引用类似于引用语法[@fig:label] 的图形并使用--filter pandoc-cros-s-ref 进行编译(如果您也使用它,则需要在--filter pandoc-citeproc 之前)。

您可以控制样式,例如\usepackage[font=small,labelfont=bf]captionheader-includes


如果您在乳胶中使用\listoffigures,一个巧妙的相关技巧是this lua-filter,它允许您设置一个简短的标题,而不是让整个图例显示在您的数字列表中:

![Caption](file.ext)#fig:label short-caption='my short caption'

然后用--lua-filter short-captions.lua编译。

【讨论】:

--filter pandoc-citeproc 应替换为 --filter citeproc。 pandoc-citeproc 已被citeproc 取代,它现在是 pandoc 发行版的一个组成部分。【参考方案6】:

假设您希望在最后输出 Pandoc 的 PDF:

我发现插入图像和更改其属性的最佳解决方案是:

\beginfigure[H]
\includegraphics[width=0.25\textwidth, height=!]images/path.png
\centering
\captionmycaption
\endfigure

在我的template.latex 我有:

\usepackagewrapfig
\usepackagefloat

其他解决方案无法指定图像宽度或高度,至少在标准降价中不能。但是,对于书籍或纸张之类的东西来说,指定图形的尺寸通常是必不可少的,除非您想在文档中使用它们之前配置图像的输出大小。在这种情况下,您必须为用于创建图像的工具处理不同的设置。

我建议在 Matplotlib 的情况下导出为 PDF,然后使用我发布的代码。这将为配置图像在输出 PDF 中的外观提供最佳图像质量和最高灵活性,而无需担心任何事情。

【讨论】:

所有这些 Latex 语法都直接进入你的降价文件吗? @spinup 是的。 Pandoc 可以处理 Markdown 文件中嵌入的 Latex 内容。另一个建议:从 Matplotlib 导出时导出为 PDF 文件。这样,Pandoc / Latex 引擎不会降低图像质量,并且您将获得可缩放的图像,而不是在放大和缩小 PDF 文件时出现像素化。【参考方案7】:

这里有很多很棒的遮阳篷。 我只想提请您注意一个细节:

必须有说明文字! 如:

Lore ipsum @fig:label

![Caption](file.ext)#fig:label

以下将工作

Lore ipsum @fig:label

![](file.ext)#fig:label

【讨论】:

以上是关于如何使用 pandoc 引用 markdown 中的图形?的主要内容,如果未能解决你的问题,请参考以下文章

使用 pandoc 进行文档转换(markdown转word)

如何使用 pandoc 在书目参考中转义“:”?

如何将 pandoc markdown 的分页符添加到 RTF 输出?

css 使用`--css pandoc.css`将它添加到您的Pandoc HTML文档中,使它们看起来更棒。 (经过Markdown和LaTeX测试。)

如何把 Markdown 文件转化为 PDF

sh 使用Pandoc将RST转换为Markdown