我偶然发现了以下示例
\documentclass[a4paper,11pt]{article}
\usepackage[english, ngerman]{babel}
\begin{document}
Quick test - not yet bold
"\textbf{Bold text for test - part 2}
Continue -without bold???
"{\bfseries Bold text for test}
Now again - without bold???
\end{document}
能否简单解释一下为什么第一个语句 ( \textbf
) 的粗体文本正确终止而第二个语句 ( \bfseries
) 失败?我发现这与引用和语言设置有关。但我不知道它具体为什么会失败。
答案1
德语模块 forbabel
变成"
了简写。此简写被实现为一个单参数宏,因为需要知道接下来会发生什么并决定做什么:例如"a
将产生“ä”,"s
产生“ß”并"|
禁用该位置的连字符。
对于"{...}
,括号内的所有内容都是参数,这显然不符合任何预定义的简写,因此 LaTeX 将提供一个标准双引号(准确地说是"
当前字体中 ASCII 位置的字符)和作为参数抓取的标记,但删除括号(这是一个低级 TeX 功能)。
因此,括号被解释为参数的分隔符,而不是组分隔符。由于它们被删除,粗体字样将永远存在。
如果你想要德国风格的引号,请使用
,,text``
或者
„text“
答案2
在了解了幕后发生的事情后,我首先想到的是
"\relax{\bfseries Bold text for test}
是一个很好的方法。由于我需要在不同场景中采用这种方法,我最终找到了
"\bgroup{}\bfseries Bold text for test\egroup{}"
这看起来很相似,但有利于解决我的其他问题也一样。