我试图编写一个简单的类,但遇到了以下问题:我需要编写一些包含德文引号的文本,这些文本是静态的,因此应该默认由该类排版。
您可以在下面的 MWE 中看到,在document
环境中我可以使用“和”"'
来实现正确的标记。在类文件中它不起作用。我只能使用\glqq
和\grqq
才能正确。
有没有办法可以正确启动它,或者如果没有类文件中的明确宏,这是否根本不可能?
文件如下myclass.cls
:
\LoadClass[a4paper,10pt]{scrartcl}
\RequirePackage[ngerman]{babel}
\newcommand{\abc}{"`abc"' \glqq abc \grqq}
下面是主要的 tex 文件:
\documentclass{myclass}
\begin{document}
"`abc"' \glqq abc \grqq
\abc
\end{document}
答案1
的最新版本babel
允许该选项KeepShorthandsActive
,因此您可以说
\LoadClass[a4paper,10pt]{scrartcl}
\RequirePackage[KeepShorthandsActive,ngerman]{babel}
\newcommand{\abc}{"`abc"'}
但这会导致一些问题,因为在序言中加载的包会受到活动包的影响"
。
你可以使用
\shorthandon{"}
\newcommand{\abc}{"`abc"'}
\shorthandoff{"}
就像建议的那样babel 简写 "| 在宏中不起作用但您可以利用类文件中的事实,从而能够使用@
-commands。简写列表位于ngermanb.ldf
\declare@shorthand{ngerman}{"a}{\textormath{\"{a}\allowhyphens}{\ddot a}}
\declare@shorthand{ngerman}{"o}{\textormath{\"{o}\allowhyphens}{\ddot o}}
\declare@shorthand{ngerman}{"u}{\textormath{\"{u}\allowhyphens}{\ddot u}}
\declare@shorthand{ngerman}{"A}{\textormath{\"{A}\allowhyphens}{\ddot A}}
\declare@shorthand{ngerman}{"O}{\textormath{\"{O}\allowhyphens}{\ddot O}}
\declare@shorthand{ngerman}{"U}{\textormath{\"{U}\allowhyphens}{\ddot U}}
\declare@shorthand{ngerman}{"e}{\textormath{\"{e}}{\ddot e}}
\declare@shorthand{ngerman}{"E}{\textormath{\"{E}}{\ddot E}}
\declare@shorthand{ngerman}{"i}{\textormath{\"{\i}}%
{\ddot\imath}}
\declare@shorthand{ngerman}{"I}{\textormath{\"{I}}{\ddot I}}
\declare@shorthand{ngerman}{"s}{\textormath{\ss}{\@SS{}}}
\declare@shorthand{ngerman}{"S}{\SS}
\declare@shorthand{ngerman}{"z}{\textormath{\ss}{\@SS{}}}
\declare@shorthand{ngerman}{"Z}{SZ}
\declare@shorthand{ngerman}{"`}{\glqq}
\declare@shorthand{ngerman}{"'}{\grqq}
\declare@shorthand{ngerman}{"<}{\flqq}
\declare@shorthand{ngerman}{">}{\frqq}
\declare@shorthand{ngerman}{"-}{\nobreak\-\bbl@allowhyphens}
\declare@shorthand{ngerman}{"|}{%
\textormath{\penalty\@M\discretionary{-}{}{\kern.03em}%
\allowhyphens}{}}
\declare@shorthand{ngerman}{""}{\hskip\z@skip}
\declare@shorthand{ngerman}{"~}{\textormath{\leavevmode\hbox{-}}{-}}
\declare@shorthand{ngerman}{"=}{\penalty\@M-\hskip\z@skip}
例如,"a
在类宏中,你可以说\"{a}\allowhyphens
,而不是,"-
你可以使用
\nobreak\-\bbl@allowhyphens
请注意,\textormath
在想要使用的类宏中,替代方法是无用的"a
。
可能babel
应该使用间接方法(现在的内存问题少多了)。我认为应该说
\def\bbl@ngerman@quotehyphen{\nobreak\-\bbl@allowhyphens}
进而
\declare@shorthand{ngerman}{"-}{\bbl@ngerman@quotehyphen}
因为"a
它应该有
\def\bbl@ngerman@quotea@text{\"{a}\allowhyphens}
\def\bbl@ngerman@quotea@math{\ddot a}
和
\declare@shorthand{ngerman}{"a}{%
\textormath{\bbl@ngerman@quotea@text}{\bbl@ngerman@quotea@math}%
}
这将使课堂编写者能够更轻松、更清晰地访问非简写版本。