我无法想象其他地方没有介绍这一点,但我无论如何也找不到它。(请原谅,我对 LaTeX 还很陌生。)
我正在尝试pandoc
基于 Markdown 文档生成 PDF,但现在我的参考书目格式与其他段落一样:前导缩进,条目之间没有空格。我想将其格式化为悬挂缩进和部分之间留出一点空格。这似乎应该是默认行为,但即使我将 LaTeX 模板剥离到最基本的框架,我也无法让参考书目正常运行。
我正在运行该类memoir
并使用chicago-fullnotes-bibliography
样式。我想知道是否有办法更改默认参考书目行为,或者为文档的该部分破解不同的缩进模式。
答案1
我不确定“chicago-fullnotes-bibliography”是什么,但如果它基于biblatex
,以下长度可能是您想要根据自己的喜好重新定义的长度:
\setlength{\bibhang}{11pt}% the hanging indent
\setlength{\bibitemsep}{6pt}% the separation b/w basic items
\setlength{\bibinitsep}{\baselineskip}% insert blank line between different initial letters
这些将与课程一起进行memoir
;改变长度以满足您的需要。
如果您不使用biblatex
,但需要遵循芝加哥风格,我建议您尽早切换到biblatex
和biber
,并使用biblatex-chicago
贡献的风格。它实现了 CMS 第 16 版,并且正在积极开发中。作者也会对有关潜在问题的反馈做出回应。
答案2
这由@jon 提供的答案只是给我一个错误信息。
但我发现以下解决方法效果很好。如果您的参考书目应该出现在文档末尾(默认),只需在 Markdown 文档的最后添加以下几行:
\noindent
\vspace{-2em}
\setlength{\parindent}{-0.5in}
\setlength{\leftskip}{0.5in}
\setlength{\parskip}{15pt}
但是,如果您手动定义参考书目的位置(使用标签<div id="refs"></div>
),则必须将上述行和标签包装<div>
在 Latex 组中,以将格式更改仅限于参考书目:
\begingroup
\noindent
\vspace{-2em}
\setlength{\parindent}{-0.5in}
\setlength{\leftskip}{0.5in}
\setlength{\parskip}{15pt}
<div id="refs"></div>
\endgroup
命令解释:
\setlength{\parindent}
并\setlength{\leftskip}
定义参考书目条目的悬挂缩进。\setlength{\parskip}
定义参考书目条目之间的间距。\noindent
是为了还将第一个参考书目条目正确缩进。\vspace{-2em}
减少参考书目与其之前的最后一段之间的垂直间距(因为\noindent
添加了一个空白段落)。
来源:https://groups.google.com/d/msg/pandoc-discuss/4SKA5E11rO4/fDGiNSOsIMkJ
答案3
(我没有资格简单地对此发表评论,但我也想将上面的两个回复串联起来,以便将来像我一样的谷歌用户使用)
Pandoc 的内置参考书目格式使用西地普罗生成“参考书目”。也就是说,虽然它读取文件并通过 XeLaTeX 等引擎.bib
生成,但它实际上从未调用 biber 等。.pdf
如果你将 pandoc 生成的参考书目输出到文件.tex
,最后你会得到类似这样的内容:
\hypertarget{refs}{}
\leavevmode\hypertarget{ref-nightwood}{}%
Barnes, Djuna. 1936. \emph{Nightwood}. New York: New Directions.
\leavevmode\hypertarget{ref-fama_melancholic_2014}{}%
Fama, Katherine A. ``Melancholic Remedies: Djuna Barnes's
\emph{Nightwood} as Narrative Theory.'' \emph{Journal of Modern
Literature} 37, no. 2 (2014): 39--58.
\url{https://doi.org/10.2979/jmodelite.37.2.39}.
因此,@jon 的解决方案无法修复 Pandoc 的固有问题,因为生成的输出并未以某种方式标记以对类似内容做出反应\bibhang
。
因此,“最简单”的解决方案是强制改变格式,类似于@salim-b 建议。
与提供的解决方案类似的解决方案是安装pandoc-citeproc-序言,在要创建参考书目的地方之前插入一个简短的.tex
文件。其基本版本是:
\section*{References}
\setlength{\parindent}{-0.2in}
\singlespacing
\small
\setlength{\leftskip}{0.2in}
\setlength{\parskip}{8pt}
\vspace*{-0.4in}
\noindent
在我的实践中(如模板所示简单文章),我在调用 Pandoc 时只需附加一个类似于上面引用的文件:
pandoc -sr markdown+yaml_metadata_block+citations \
--pdf-engine=xelatex --template=template.tex \
--filter pandoc-citeproc \
./metadata.yml ./tmp/main.md ./bibliography-preamble.tex \
-o output.pdf
潘多克做--biblatex
但是,有一个功能可以将其引用语法转换为 BibLaTeX 命令。在编译时添加标志将用所需的.tex
所有\autocite
s 等填充生成的文件。但是,正如文档中明确指出的那样:
此选项不适用于 pandoc-citeproc 过滤器或 PDF 输出。它旨在用于生成可使用 bibtex 或 biber 处理的 LaTeX 文件。
在这种情况下,完整的咒语如下:
pandoc -sr markdown+yaml_metadata_block+citations \
--biblatex ./metadata.yml ./tmp/main.md \
-o output.tex ; xelatex output.tex ; biber output ; xelatex output.tex ; xelatex output.tex
事实上,我相信这是我今后将亲自使用的解决方案。我使用一个能够正确/语义地响应其环境的工具来获得格式正确的参考书目,而不是 Citeproc 产生的那种拼凑物。