通用 `\cite` 命令或定义新的 cite 命令

通用 `\cite` 命令或定义新的 cite 命令

我想知道获得“通用”引用命令的最佳实践。

在我写过的不同文章中,每篇文章都有针对不同出版场所的不同模板。而且,每个模板似乎都与其自己独特的引用命令配对:\cite,,,,,,\autocite\citep\citeN\citeyearETC...

本着分离内容和样式的精神,我希望能够轻松切换模板,而不必将一个引用命令中的“全部替换”为另一个引用命令。

因此,我的问题是:获得通用引用命令的最佳策略是什么?对于引用命令,选择 BibTex 还是 BibLatex 会有所不同?或者我应该定义使用模板定义命令的新命令。

另外,我想问一下,如果定义新命令是可行的方法,您能否提供一个如何利用现有引用命令定义新命令的示例?

希望这很清楚。提前谢谢!=)


更新:我发现它\autocite允许人们选择命令的格式以生成括号或脚注引用。但这不是我想要的功能。例如,如果我们查看 ACM latex 模板 (acmsmall):http://www.acm.org/publications/latex_style/

文档中指出:“如果您在文章中明确提到该作品,则应使用\citeN命令。此命令生成例如,Nielson [1985] 讨论了指称程序转换。或者,您使用\citeyear并说 Nielson [1985] 讨论了它们。”文档继续定义其他命令,例如\citeNPalso。

如果我使用这些命令格式化我的文本,但随后切换模板,我必须替换所有引用命令,具体取决于其他模板定义的内容。我想要做的是定义我自己的命令抽象层,我可以更改它以遵循每个不同的模板。如果我\citeN在句子开头使用,但下一个模板没有定义此命令,我想自己定义它。从而慢慢建立一套“通用”的引用命令。这是最佳实践吗?还是有更好的方法来实现这一点?

我认为可以在以下位置声明 cite 命令:renewcommand \cite[99]{Turing} 与 \cite{Turing}

如果还有更多困惑,请告诉我。

答案1

如果你真的想要一组引用命令,一个很好的起点似乎是由biblatex(或者更确切地说是它的标准样式)提供的命令列表,如第 3.7 节所述引文命令,第 79 页biblatex文档

然后,您应该使用适合当前任务的命令。我在下面列出了一些我认为基本的命令(及其用例)。请注意,所有biblatexcite 命令都带有“大写版本”(命令名称的第一个字母大写),应在句子开头使用,这些命令将它们打印的第一个单词大写(例如,\cite\Cite)。

您的首选命令应该是\autocite\cite。我更喜欢\autocite,但我绝对可以理解人们是否更喜欢 ,\cite因为它更简短,更切题。

如果您的文档中只有一种引用样式,请配置\autocite以便它给出预期的输出。如果您有几种不同的样式,请配置\autocite给出最常见的风格。

使用

  • \cite将作品本身作为句子的主语(或宾语)。例如:

    In \cite{foo} we can find a very interesting discussion of that matter.

  • \parencite用于括号引用,例如给出特定引文的确切来源:

    "The toaster is the greatest invention since sliced bread" \parencite[14]{foo}

    理想情况下,你甚至不会\parencite直接使用,而是使用高级\autocite命令以及适合autocite此类引用的选项。

  • \footcite\parencite用于脚注中的引用;根据我的经验,和的用例\footcite非常相似,人们可能会使用其中一个,但需要\autocite注意这一点。

  • \textcite获得作者/编辑(作为句子的主语)以及对特定作品的括号引用。

    \Textcite{foo} found something.

  • \citeauthor//仅打印作者、年份、标题条目。仅当您需要引用年份、标题等时才使用此选项,不要使用这些命令来模仿 的行为\citeyear。也就是说:如果您使用作者-标题样式,请不要写,因为您可能会更改为需要 的作者-年份样式。请改用。\citetitle\textcite\citeauthor{foo} (\citetitle{foo}) found ...\citeauthor{foo} (\citeyear{foo}) found ...\textcite{foo} found ...

    When \citeauthor{foo} wrote his first work titled \citetitle{foo} in \citeyear{foo} ...

大多数(如果不是全部)biblatex样式都应至少带有该命令集。因此您应该没问题。

但是,如果您使用的模板不依赖于biblatex,则可以尝试定义下面的命令集。在您的示例中,\citeN似乎等同于\textcite,因此您可以告诉 LaTeX\let\textcite\citeN并在文档中使用\textcite。(当然,出版商可能对这种看似无意义的宏不太满意\let,但那是另一回事。)如果您使用的模板具有不提供 作者年份 样式,\textcite您可以通过以下方式自行定义它

\newcommand{\textcite}[1]{\citeauthor{#1} (\citeyear{#1})}

当然,这个定义根本不考虑前后注释,但它可能足以放在一个文档中。如果你使用,biblatex你应该使用\DeclareCiteCommand内部 bibmacros,但这可能会更加复杂。

如果您的模板没有提供\autocite但有\parencite等效的,请不要犹豫,\let\autocite\parencite以便您可以\autocite在所有文档中一致使用。

您会发现,没有简单的解决方案可以应用于规范不同模板中的书目样式。人们总是必须非常仔细地查看所提供的命令,并且 - 最好 - 可以希望找到(或定义)与期望找到的“标准”宏等效的命令。但这有时可能是一个相当艰巨的任务。

答案2

虽然问题。首先,您提到的\citeN\citeNPso 命令可能具有不同的含义,并且它们的差异无法(轻松)自动化,因此作者需要选择合适的命令。

下一点是,一个场地使用一组引用命令,另一个场地使用另一组。我敢说这些集合并不是完全可以互换的,所以定义自己的集合来翻译成每个集合也无济于事。

然后出版商要求作者不要定义自己的宏。这是可以理解的,他们不想因为必须学习你的论文的特定工具集而负担沉重(他们这个月要处理的一百多个工具中的一个)。

一个(部分)解决方案是使用某种风格的命令,外部程序会将该风格转换为在交付最终的 LaTeX 版本之前使用的特定风格,在此风格中,您的风格被剥离。

无论如何,当我必须将论文从一种出版风格改为另一种出版风格时,修改标题、作者、按要求修改作者信息、图表/表格风格要费更多功夫;更改引用风格大多是偶然的。为什么这对你来说是一件如此繁琐的事?

相关内容