我想创建一个与包含两个空行的预定义模板匹配的二维码。我正在使用二维码包,如果我只输入
\qrcode{a
b}
在我的文档中。代码已生成,并使用两个空行进行扫描。
但是,我实在想不出如何将这个调用包装在 \newcommand 中。当我尝试
\newcommand{\mycode}[2]{%
\qrcode{#1
#2}}
\mycode{a}{b}
我收到了踩踏
!段落在 \qrcode@in 完成之前结束。
错误。我读了所有关于 TeX 如何读取输入的内容(著名的“第 8 章”等),以及空行何时变为 \par 等,但我没能找到解决这个问题的漏洞。我试过 \char13\char13,但失败了,原因是
缺少插入的 \endcsname。
那么我该如何克服这个问题呢?
答案1
要创建一个可以\qrcode
在其主体中调用并获取参数的宏,您还应该\qr@verbatimcatcodes
在读取参数之前进行设置,这样您的宏就可以以相同的方式运行\qrcode
。此外,您应该使用\?
包含换行符,就像@egreg已经建议的那样:
\documentclass[]{article}
\usepackage{qrcode}
\makeatletter
\newcommand\mycode
{%
\begingroup
\qr@verbatimcatcodes
\mycode@
}
\newcommand\mycode@[2]
{%
\qrcode{#1\?\?#2}%
\endgroup
}
\makeatother
\begin{document}
\mycode{a}{b}
\end{document}