我们都知道csquotes
它提供了多种显示引号和相关内容的功能。我特别喜欢的一个功能是使用 的活动引号。这特别好,因为它可以将处理引号\MakeAutoQuote
的功能与代码易读性相结合。csquotes
然而,选择活动角色的使用方式\MakeAutoQuote
非常\MakeAutoQuote*
棘手。很容易犯错,而且要从中获得良好的工作流程也并非易事。
例如,如果碰巧使用:
\MakeOuterQuote{"}
babel
(在多种语言中) 或文件路径发生冲突的可能性非常大。
一个不太明显的陷阱是:
\MakeAutoQuote{“}{”}
\MakeAutoQuote*{‘}{’}
一旦有人写下以下内容,就会导致引文不平衡:
“我不知道自己在做什么。”
有关另一个,请参阅csquotes \MakeAutoQuote{>}{<} 和 graphicx 在 LuaTeX 下会产生问题。
因此,我对以下内容感兴趣:
什么字符一个不应该用于主动引号的目的
csquotes
?哪些是适合该目的的候选者?这些候选者之间是否存在任何预期的冲突或权衡?
我知道这里的选择可能取决于文档的语言和手头的特定输入设置(包括正在使用的键盘和编辑器)。所以我很高兴听到特定的设置,以及它们背后的原因和最终的警告。但如果可能的话,我会特别关注有关此事的一些一般指导方针。
答案1
我希望听到关于这个问题的经验之谈,但我会尝试根据收到的评论(我很感激)、我在网站上找到的关于这个问题的信息、文档csquotes
以及我的个人经验,提供一个合理的自我答案。
注意事项
你肯定不想LaTeX 保留字符一个csquotes
活跃角色。因此,这排除了:
#
,,,,,,,,,,$
%
^
&
_
{
}
~
\
文档csquotes
将此列表扩展为:
一般而言,有效引号可以是类别代码为 12 或 13 的任何单个字符,也可以是代表单个字符的任何多字节 UTF-8 序列。但是,也有一些例外:数字、标点符号、撇号、连字符以及所有属于 LaTeX 语法的字符均会被拒绝。总之,本包将视以下字符为保留字符:
A–Z a–z 0–9 . , ; : ! ? ' - # $ % & ^ _ ` ~ \ @ ∗ { } [ ]
ASCII:方便,但需要小心
对于大多数键盘来说,ASCII 范围可能是输入最方便的。但是,除了上面的列表之外,选项很少。不过,根据您的环境,可以在此处找到一些可用的设置。在检查网站上的相关问题时,我遇到了两种相对常见的用法:
引号,常规的直引号。由于缺少一对
"
,因此在本例中与 一起使用。\MakeOuterQuote{"}
小于和大于符号
<>
。
csquotes
竭尽全力避免冲突。特别是在数学模式和逐字环境中:
所有引号命令均设计用于文本模式,在数学模式下会发出错误消息。请注意,所有活动引号在数学模式下都保留其原始功能。完全可以使用大于号之类的字符作为活动引号,而不会干扰数学模式。在逐字上下文中,活动引号通常会被禁用。
然而,仍然需要注意一些事情:
选择活动引号时仍需小心谨慎。请注意,通常不能在需要字符串的命令的参数中使用活动字符,例如
\input
、\label
或\cite
。有两个软件包试图解决这种情况:软件包babel
和underscore
软件包(使用 strings 选项加载时)。这两个软件包都重新定义了受此一般问题影响的几个标准命令。如果加载了其中任何一个软件包,csquotes 将自动利用所有改进。不幸的是,这两个软件包都修补了一组不同的命令,并且都没有涵盖所有可能存在漏洞的命令。
网站上有一些关于这些选择的缺陷的例子。但它们肯定是可以控制的。特别是,csquotes
还提供\DisableQuotes
和\EnableQuotes
管理本地有效报价。
这个讨论可能也很有趣,尽管与以下内容没有直接关系csquotes
:我该如何防止用 babel 将 "s 变成 ß?
热门候选:非 ASCII 引号字符
那些是:
- 弯引号,单引号和双引号:
‘
,’
,“
,”
- 引号,或称 guillemets,通常是双引号,但也有单引号:
«
,»
,‹
,›
据我所知,这里唯一需要注意的是单弯引号的使用。如果您选择它们作为csquotes
' 活动引号字符,则在表示撇号时应注意使用直引号,否则最终会导致引号不平衡。
除此之外,唯一需要关心的就是如何方便地输入这些字符。
输入注意事项
这将挂在您的键盘和编辑器上。许多编辑器确实提供了某种即时替换直引号的功能,以替换弯曲引号,或最终替换其他引号(也称为“智能引号”)。有些编辑器将为您提供更大的灵活性来配置特定键的输入,或者允许您足够轻松地输入您选择的任何特定字符。
使用“智能引号”和相关功能时可能会出现一个缺点,即当您键入时引号会自动替换为弯曲的引号,当您出于某种原因(babel
快捷方式、路径等)实际需要常规的直引号时,您可能会遇到不便。同样,这对您的影响取决于您的编辑器和设置。
根据您的系统,如果您愿意,也可以重新配置键盘。而且,您可能会很幸运,使用修饰键,键盘上默认可以使用其中一些字符。例如,美国国际键盘布局似乎有 和 可用的 guillemets。AltGr + [如果AltGr + ]您遵循egreg 的建议和“购买您喜欢的任何键盘,只要它是国际英语”,您就会在那里被分类。(我使用 pt_br 键盘,它们有和AltGr + z)AltGr + x。
尾声:内部引号也有效吗?
csquotes
\enquote
支持对和使用活动引号\enquote*
,即外引号和内引号(当然还有更多),即:
\MakeOuterQuote{<character>}
\MakeInnerQuote{<character>}
\MakeAutoQuote{<character 1>}{<character 2>}
\MakeAutoQuote*{<character 1>}{<character 2>}
不过,您应该考虑一下,如果两者对您来说实际上同样方便。csquotes
自动处理引号的嵌套并做正确的事™。因此,您很可能经常需要输入标准的外部引号,而很少需要在任何特定时刻强制使用内部引号。因此,为频繁的外部引号设置一个活动字符,并依赖于\enquote*
最终的异常,可能是最有趣的设置。
网站上的示例:
- 直引号
\MakeOuterQuote
:
除了 `` + '' 之外,在 LaTeX 中还有其他方法可以使用双引号吗?
LyX 下使用法语 guillemets 在 csquotes 中实现跨越多个段落的引文
如何暂时禁用 quiver 包的 \MakeOuterQuote?
- 直引号和 babel 之间的一些(可修复)问题:
- 直引号和带空格的路径之间的麻烦:
- 小于/大于符号的使用:
替换引号(或者:使用 << 和 >> 作为 csquote 类似自动引号)
- 使用小于/大于符号时遇到的一些麻烦:
csquotes 和 hyperref 颜色链接一起出现的问题
csquotes \MakeAutoQuote{>}{<} 和 graphicx 在 LuaTeX 下会产生问题
使用 \makeautoquote 和 \makeautoquote* 时,csquotes、hyperref 和 scrartcl 会产生多个错误
- guillemets 用途:
与使用编辑器的“自动替换”功能相比,使用 csquotes 有什么优势?
biblatex:句子大小写和嵌套引号(这可能是 biblatex 文档设置的来源吗?)
- 弯曲的双引号和单引号:
获取 Emacs 的电子报价模式以与 AUCTeX 和 BibTeX 模式配合使用
一致的字体(请注意撇号)