为什么 qrcode 不能与 [ngerman] babel 一起使用?

为什么 qrcode 不能与 [ngerman] babel 一起使用?

考虑以下 MWE:

\documentclass{scrartcl}
\usepackage{qrcode}

\usepackage[english]{babel}

\begin{document}
\pagestyle{empty}
\qrcode[height=5cm,level="M"]{BCD\?001\?1\?SCT\?ABCDATWW\?Creditor\?AT611904300234573201\?EUR100\?\?\?My\ Subject}
\end{document}

这有效。但是,如果我切换语言ngerman,LaTeX 将返回错误:

... loadhyph-de-1996.tex:8: Argument of \language@active@arg" has an extra }. 
... loadhyph-de-1996.tex:8: Paragraph ended before \language@active@arg" was complete.

是什么赋予了?

答案1

德语 babel 用作"简写,例如"o 是重音字母。您可以本地关闭简写,也可以全局关闭它们,方法是

\usepackage[shorthands=off,ngerman]{babel}

答案2

如果您只是想打印二维码,没有问题:只要不加载即可babel

如果您的文档中有需要德语的部分,那么也"需要使用简写(例如,在词素边界处打破连字符,或获取组合词的适当连字符)。

我建议修补\qrcode以禁用速记。

\documentclass{scrartcl}
\usepackage[ngerman]{babel}
\usepackage{qrcode}
\usepackage{xpatch}

\makeatletter
\xpretocmd{\qrcode}{\begingroup\shorthandoff{"}}{}{}
\xapptocmd{\qrcode@in}{\endgroup}{}{}


\begin{document}

\qrcode[height=5cm,level="M"]{BCD\?001\?1\?SCT\?ABCDATWW\?Creditor\?AT611904300234573201\?EUR100\?\?\?My\ Subject}

\bigskip

Auf"|lage, nicht Auflage

\end{document}

在此处输入图片描述

相关内容