为什么 Pandoc 不能正确地将引用从 Markdown 转换为 LaTeX?

为什么 Pandoc 不能正确地将引用从 Markdown 转换为 LaTeX?

考虑以下 markdown 片段:

Connecting these native implementations to the Python world is enabled
by the [Cython](http://cython.org/) toolchain  [@behnel2011cython]. 

我使用 pandoc 将 markdown 转换为 LaTeX:

pandoc --chapters ../Source/Chapters/Content.md -o ../Example/Chapters/Content.tex

这被转换为 LaTeX 并产生以下输出:

Connecting these native implementations to the Python world is enabled
by the \href{http://cython.org/}{Cython} toolchain~
{[}@behnel2011cython{]}. 

为什么引用没有得到适当处理? 将其转换为应该很容易~\cite{behnel2011cython}。 我是不是忘了给 pandoc 一些标记?

答案1

如果你想使用引用,你还必须定义 CSL 样式(引用样式语言)通过*.csl-您必须引用的文件。

这是 Markdown 中的 MWE。它测试了几种不同的方法来为 Markdown 中的引文提供参考:

# Markdown source code for relevant part of this page

``` {.markdown}
i.  [@nonexistent]
i.  @nonexistent
i.  @z1 says fooo.
i.  @z1 [p. 30] says baaar.
i.  @z1 [p. 30, with suffix] says blahblah.
i.  @z1 [-@z2 p. 30; see also @z3] says blah-blubb.
i.  In a footnote.[^1]
i.  A citation group [see  @z1 p. 34-35; also @z3 chap. 3].
i.  Another one [see @z1 p. 34-35].
i.  And still another, in a footnote.[^2]
i.  Quote with a *suffix* and a *locator* [@z1 pp. 33, 35-37, and nothing else].
i.  Quote with only one locator [@z1 and nowhere else].
i.  Now a few *modifiers*[^3]...
i.  With some extra Markup [*siehe* @z1 p. **32**].
i.  Jane Doz doesnt like me [***siehe*** **@z4**].

[^1]: A citation without locators [@z3].

[^2]: Multiple citations [siehe @z2 chap. 3; @z3; @z1].

[^3]: ...like a quote without author: [-@z1]. And now OStR Oster with a locator [-@z2 p. 44].

$x^2 + y^2 = 1$ @z1
```

# Document output of Markdown code

i.  [@nonexistent]
i.  @nonexistent
i.  @z1 says fooo.
i.  @z1 [p. 30] says baaar.
i.  @z1 [p. 30, with suffix] says blahblah.
i.  @z1 [-@z2 p. 30; see also @z3] says blah-blubb.
i.  In a footnote.[^1]
i.  A citation group [see  @z1 p. 34-35; also @z3 chap. 3].
i.  Another one [see @z1 p. 34-35].
i.  And still anoter, in a footnote.[^2]
i.  Quote with a *suffix* and a *locator* [@z1 pp. 33, 35-37, and nothing else].
i.  Quote with only one locator [@z1 and nowhere else].
i.  Now a few *modifiers*[^3]...
i.  With some extra Markup [*see also* @z1 p. **32**].
i.  Jane Doz doesnt like me [***see*** **@z4**].

[^1]: A citation without locators [@z3].

[^2]: Multiple citations [siehe @z2 chap. 3; @z3; @z1].

[^3]: ...like a quote without author: [-@z1]. And now OStR Oster with a locator [-@z2 p. 44].

$x^2 + y^2 = 1$ @z1

# Bibliography

您可以使用以下 Pandoc 命令转换此 Markdown:

pandoc -V geometry="paperwidth=18cm, paperheight=34cm, margin=0.3cm" \
       -V language=de-DE -V lang=ngerman                             \
       --highlight-style=espresso --filter=pandoc-citeproc           \
       --biblio=my-biblio.bib --csl=stuttgart-media-university.csl   \
       -o stuttgart-media-university---csl.pdf mwe.md

从命令中可以看出,它引用了三个文件:

  1. Markdown 源代码,mwe.md
  2. 定义要使用的 CSL 样式的附加文件,stuttgart-media-university.csl。(我从核心存储库下载了它,引用样式网站GitHub
  3. 第三个my-biblio.bib,其中包含我的引用参考。其内容如下:

    @Book{z1,
    author="Thales von Milet",
    title="Doppelwinkel-Funktionen",
    url="http://de.wikipedia.org/wiki/Formelsammlung_Trigonometrie#Doppelwinkelfunktionen",
    year="600 v.Chr.",
    address="Milet, Kleinasien",
    publisher="Wikipedia"
    }
    
    @Article{z2,
    author="OStR Dr. math.nat. Oster",
    title="Unterrichtsmaterialen für Klasse 9 (Mittelstufe)",
    year="1969",
    journal="Journal of Generic Studies",
    volume="9",
    pages="33-34"
    }
    
    @InCollection{z3,
    author="Elvis Presley, Madonna and Pink Floyd",
    title="Kombinatorik Hypergeometrischer Verteilungen",
    booktitle="Wiederholungslose Auswahlprobleme",
    editor="Cleopatra, Königin von Ägypten",
    publisher="Steintafeln Moses GmbH & Co. KG",
    address="Gizeh",
    year="30 v.Chr."
    }
    
    @Article{z4,
    author="Jane Doz",
    title="Why All Men Suck",
    year="2006",
    journal="Journal of Gender Studies",
    volume="6",
    pages="33-34"
    }
    

以下是生成的 PDF 页面的屏幕截图:

生成的 PDF 的屏幕截图“stuttgart-media-university---csl.pdf”

仔细查看该页面,您可以看到每个 Markdown 源引用参考文献如何准确地转化为最终的页面布局。

请注意,最终的页面布局很大程度上受您使用的特定 CSL 样式文件的影响!应用不同的 CSL,页面内容将会有所不同(具体来说:参考文献、脚注和“参考书目”部分都受到 CSL 的影响)。

我最近创建的用于测试 CSL 样式文件的 GitHub 存储库包含有关该主题的更详细的说明。

答案2

--biblatex转换时只需使用该标志pandoc

pandoc --biblatex --chapters ../Source/Chapters/Content.md -o ../Example/Chapters/Content.tex

结果:

Connecting these native implementations to the Python world is enabled
by the \href{http://cython.org/}{Cython} toolchain
\autocite{behnel2011cython}.

你必须使用biblatex包裹让它工作——但无论如何你都应该使用它,因为它非常棒:文档非常棒,而且软件包本身非常“成熟”。以下是一些相关问题,可帮助您入门:

答案3

作为替代方案,--biblatex您可以使用--natbib,以便使用LaTeX 包“natbib”命令(例如\citep和)。\citet

相关内容