(v.3.9)中的\declare@shorthand
和 有什么区别?在语言定义文件中,这两个宏中的哪一个更可取?\defineshorthand
babel
babel.pdf
手册(v.3.9)提供了一个例子
\defineshorthand{"*}{\babelhyphen{soft}}
\defineshorthand{"-}{\babelhyphen{hard}}
russian.ldf 提供了类似的定义\declare@shorthand
,例如
\declare@shorthand{russian}{""}{\hskip\z@skip}
\declare@shorthand{russian}{"~}{\textormath{\leavevmode\hbox{-}}{-}}
答案1
从babel.sty
:
\def\defineshorthand{\declare@shorthand{user}}
定义命名空间的简写user
\declare@shorthand{ngerman}{"a}{\textormath{\"{a}\allowhyphens}{\ddot a}}
\declare@shorthand{russian}{""}{\hskip\z@skip}
用来内部用于特定语言设置。在上面的例子中,一个用于 ,ngerman
另一个用于russian
。
所以\defineshorthand{"*}{\babelhyphen{soft}}
和
\declare@shorthand{user}{"*}{\babelhyphen{soft}}
如果您想要定义自己的语言设置并加载,babel
则使用内部定义。如果您只有一些新的简写,则使用用户定义。
答案2
在 3.9 中
\declare@shorthand{russian}{""}{\hskip\z@skip}
是(将会是)只是一个优化版本
\declareshorthand[russian]{""}{\hskip\z@skip}
此简写仅针对已选择此语言时定义russian
且有效。如果没有可选参数,则为用户简写,始终有效且优先于语言简写。在语言定义文件中,首选命令是优化的命令(即\declare@shorthand
)。