我使用acronym
包来显示首字母缩略词,例如“KFC”。由于大多数首字母缩略词都是常识,因此我使用\acs{kfc}
,它仅显示缩写形式。此外,该siuntix
包还可用于显示单位,例如“km”。
为了确保整个文档的一致性(间距和外观),应该:
- 使用该
acronym
包定义缩写,例如“eg”、“BC”和“Mr.”? - 使用该
acronym
包一起siunitx
定义单位,例如“km”?
更新:
解决方案解释了何时使用acronym
包以及何时使用siunitx
。是否有用于显示缩写的包?
答案1
单位为不是缩写:它们是表示乘法因子的符号。就像我们在 LaTeX 中说的那样1.2\linewidth
:我们不需要知道数字对应的是什么\linewidth
(哪个是一个数字(在 TeX 内部),只是为了表达它的倍数。
符号的印刷方式应完全相同。它们的形状是否由字母决定并不重要。因此,“kJ”是不是“千焦耳”的缩写(这是一个奇怪的缩写),但它是一个根据明确定义的规则构建的符号,例如,
千焦耳 = 1000 焦耳
文本缩写是另一回事:“eg”只是“例如”的传统写法。缩写“p.”根据上下文可以表示“page”或“pages”。
首字母缩略词有点像宏:当我写下首字母缩略词 UCAS 时,我想到的是它之前给出的定义(Ufficio per la Complicazione degli Affari Semplici,英文为 SMEO,Simple Matter Entanglement Office)。
如何区分首字母缩略词和缩写?首字母缩略词绝不有句号;缩写通常至少有一个句号(按照英国用法,如果缩写以缩写词的最后一个字母结尾,则没有句号)。
答案2
回答您关于缩写的编辑,根据我的经验(即法语),缩写几乎不可能通过单个宏来定义,因为在大多数情况下它们需要手动调整,而且我还没有找到可以很好地处理它们的软件包。
有些缩写需要连接(在缩写内或末尾),有些则需要您直接使用包xspace
。有些缩写,例如“eg”,众所周知,您无需解释,而其他缩写则必须插入到文档中列出的任何简写列表中。它们唯一的共同点是您不需要在第一次使用时定义它们,但有些缩写并非在每个地方都使用,因此您应该有办法强制 LaTeX 使用完整形式。
您可以使用的一些解决方案包括:
手动定义缩写
\usepackage{xspace}
\newcommand{\eg}{e.g.\@\xspace}
\newcommand{\Prof}{Prof.~}
这是显而易见的解决方案,尽管可能需要一些额外的宏才能在需要的地方将缩写插入到简写列表中。有几种方法可以做到这一点,但如果您使用 BibLaTeX 调整(如下),则可以使用“eg”自定义条目,然后简单\nocite{eg}
操作即可。您可能需要将缩写添加到未打印在一般参考书目中的特殊类别中。
调整 BibLaTeX(又名:“不那么简单”的解决方案)
为了定义缩写,我一直在使用这个调整:如何将书目条目的简写与文本中的首字母缩略词结合起来?
如果您还按照建议将其用于首字母缩略词和期刊标题,您将获得一个一致的工具,尽管您需要根据要实现的结果使用几种条目类型(“customa”、“customb”等)。缺点是您确实需要几个文件(最好是)来协调所有内容,这需要对 BibLaTeX 进行大量调整,并且您需要一个引用条目和一个用于所有缩写的手动缩写。
因此,我的解决方案有点简约,因为可能还有其它需要调整的地方才能显示您想要的内容……但这实际上取决于您的参考书目设置。
我将只解释如何将此机制应用于缩写,即以点结尾的文本片段——在文本中使用时不得重复。
首先,你需要定义你的缩写没有最后一个点。 例如:
@customa{Cciv,
Shorthand = {C.~civ},
Title = {Code civil}}
为了显示缩写,我们将定义一些宏。
\xdot
,与 xspace 非常相似,仅在需要时才添加一个点:
\usepackage{xspace}
\newcommand*{\xdot}{%
\@ifnextchar{.}%
{}%
{.\@\xspace}%
}
然后我们定义\abbrv
一个宏,如果引用命令带星号(通过“cite”),则使用缩写,否则使用完整形式(通过“citetitle”)。实际上,您可以让它反过来工作。您可能需要两个这样的宏(有些缩写除非带星号,否则采用短格式,有些除非带星号,否则采用长格式)
由于我们使用的是实际的引用命令,我们需要将缩写放在特殊的参考书目类别(abbrv)中,稍后我们将指示 BibLaTeX 不要打印它。
\abbrv
将用作\xdot
默认可选参数,因此它将在需要的地方自动插入一个点,除非引用命令另有指示。
这是一个最小的例子,您确实可以添加索引等。
\makeatletter
\newcommand{\abbrv}[2][\xdot]{%
\@ifstar%
{\addtocategory{abbrv}{#2}\cite{#2}#1}
{\citetitle{#2}\xspace}}
\makeatother
现在,我们定义将插入缩写的命令。——关键是:我们不想使用 \cite{Cciv},因为它有点违背了作者使用缩写的目的。
因此,在这种情况下将是:
\newcommand{\Cciv}{\abbrv{Cciv}}
然后,您需要修改.cbx
和.bbx
文件,以便它们可以正确显示您的缩写和完整形式(例如,斜体)。上面引用的 Audrey 的回答中有一个例子,我不会再重复了。您需要使用\DeclareFieldFormat
和来创建适当的驱动程序\DeclareBibliographyDriver
。
如果您正在索引条目,可能还需要修改索引命令。我只索引作者,因此我的情况没有出现这个问题,但是如果您索引标题并且不想将缩写与参考书目一起索引,则必须进一步重新定义命令。
这可能还需要您稍微调整一下 BibLaTeX 的简写列表环境,以强制它使用您为简写定义的样式(我使用的是“citeshorthand”)。您还需要强制它显示缩写点(到目前为止,我还没有找到在 BibLaTeX 中正确执行此操作的方法)。就我而言,所有缩写和首字母缩略词都使用点,因此我只需要指定:
\defbibenvironment{shorthands}
{\list{\printfield[citeshorthand]{shorthand}\xdot}{%
\labelwidth\shorthandwidth
\labelsep\biblabelsep
\leftmargin\labelwidth
\advance\leftmargin\labelsep
\itemsep\bibitemsep
\parsep\bibparsep
\def\makelabel##1{##1\hss}}}
{\endlist}
{\item}
在需要打印参考书目的地方,使用:
\printbibliography[notcategory=abbrv]
这并不简单,但到目前为止,这是对我唯一有效的解决方案。它几乎毫不费力地处理了几十个法律缩写(也就是说,一旦你设法正确设置它……而这部分并不完全轻松)。