我想"=
在命令中使用可断开的连字符:
\documentclass[a4paper]{article}
\usepackage[ngerman]{babel}
\newcommand{\TT}{Test"=Text }
\begin{document}
This is a test whether the hyphen in \TT works or not.
In normal Test"=Text works.
\end{document}
在文本中"=
可以正常工作,但作为命令"=
不起作用。有什么想法吗?
答案1
定义宏时-shorthand尚未激活,因此您必须激活它babel
:"=
\documentclass[a4paper]{article}
\usepackage[ngerman]{babel}
\shorthandon{"}
\newcommand{\TT}{Test"=Text }
\shorthandoff{"}
\begin{document}
This is a test whether the hyphen in \TT works or not.
In normal Test"=Text works.
\end{document}
“激活”意味着它让 LaTeX 认为“等等,这里发生了一些事情,最好仔细检查下一个字符”,就像反斜杠\
告诉它后面有一个宏一样。\shorthandon{"}
告诉 LaTeX 注意任何"
。(这只适用于"
afaik,它是babel
特定的。)通常,"
直到 才会激活\begin{document}
。
答案2
使用babel
2013 年 3 月发布的 v3.9,您还可以使用新KeepShorthandsActive
选项“告诉 Babel 在加载语言文件后不要停用简写,以便它们在序言中也可用”(手册,第 11 页)。
\documentclass[a4paper]{article}
% The following requires babel v3.9 (released March 2013)
\usepackage[ngerman,KeepShorthandsActive]{babel}
\newcommand{\TT}{Test"=Text }
\begin{document}
This is a test whether the hyphen in \TT works or not.
In normal Test"=Text works.
\end{document}