在 \newcommand 中使用“德语”引号

在 \newcommand 中使用“德语”引号

可能重复:
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}

相关内容