babel 中的 \declare@shorthand 和 \defineshorthand 有什么区别?

babel 中的 \declare@shorthand 和 \defineshorthand 有什么区别?

(v.3.9)中的\declare@shorthand和 有什么区别?在语言定义文件中,这两个宏中的哪一个更可取?\defineshorthandbabel

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)。

相关内容