【问题标题】:How do I make a reference to a figure in markdown using pandoc?如何使用 pandoc 引用 markdown 中的图形?
【发布时间】: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).

应该产生:

\begin{figure}[htbp] 
\centering 
\includegraphics[keepaspectratio,width=\textwidth,height=0.75\textheight]{i mage.png} 
\caption{Alt text} 
\label{image} 
\end{figure} 

A reference to the image (\autoref{image}).

相反,我得到:

\begin{figure}[htbp]
\centering
\includegraphics{image.png}
\caption{Alt text}
\end{figure}

A reference to the \href{\#image}{image}.

我注意到两个问题:

  • \label{image} 未出现:未创建引用。
  • (\autoref{image}) 变为 \href{\#image}{image}:未检测到交叉引用。

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

任何帮助将不胜感激!

【问题讨论】:

  • 我已经对其进行了测试,但它不会产生自动引用。奇怪...
  • 也许你应该编辑你的问题,包括你尝试了什么、你得到了什么和你想要什么(这样更容易帮助你)。

标签: latex markdown figure cross-reference pandoc


【解决方案1】:

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

![This is the caption\label{mylabel}](/url/of/image.png)
See figure \ref{mylabel}.

【讨论】:

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

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

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

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

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

 @fig:description

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

【讨论】:

【解决方案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 \label{mylabel}][image]
See figure \ref{mylabel}.

【讨论】:

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

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

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

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

</div>

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

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

【讨论】:

【解决方案5】:

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

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

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

您可以控制样式,例如\usepackage[font=small,labelfont=bf]{caption}header-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:

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

\begin{figure}[H]
\includegraphics[width=0.25\textwidth, height=!]{images/path.png}
\centering
\caption{mycaption}
\end{figure}

在我的template.latex 我有:

\usepackage{wrapfig}
\usepackage{float}

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

我建议在 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}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-31
    • 2013-06-14
    • 2013-05-13
    • 1970-01-01
    • 2021-03-12
    • 1970-01-01
    相关资源
    最近更新 更多