可能重复:
babel 简写 "| 在宏中不起作用
我知道这里对 LaTeX 机制有更深层次的不理解,但我不知道如何表述我的问题以涵盖一般情况,抱歉。
\documentclass{scrbook}
\usepackage[ngerman]{babel}
% Trivial case, the "real" macro is a *bit* more involved
\newcommand{\mymacro}[1]{"`#1"'}
\begin{document}
"`Foo"'
\mymacro{Bar}
\end{document}
“Foo” 的排版符合预期,并带有正确的“德语”引号。但“Bar” 的排版却是逐字逐句的:
"`Bar"'
显然,引号“transformation”在里面不起作用\newcommand
。
由于我从来没有真正理解那些更“神奇”的 LaTeX 命令(比如或\relax
)到底是什么,或者底层的 TeX 到底是如何工作的,所以我被困住了,无法弄清楚\detokenize
\makeatletter
我需要什么才能使宏内的引号正常工作...
答案1
这里的解决方案比“重复”问题更简单,因为你做想要引号,而不是"
字符的其他效果。
为此,您可以使用备用命令\glqq
并用引号\grqq
定义。babel[ngerman]
\documentclass{scrbook}
\usepackage[ngerman]{babel}
% Trivial case, the "real" macro is a *bit* more involved
\newcommand{\mymacro}[1]{\glqq #1\grqq}
\begin{document}
"`Foo"'
\mymacro{Bar}
\end{document}