如何在宏中产生两行空行?

如何在宏中产生两行空行?

我想创建一个与包含两个空行的预定义模板匹配的二维码。我正在使用二维码包,如果我只输入

\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}

答案2

如果您正在使用该qrcode软件包,您可以找到手册的相关部分:

在此处输入图片描述

(第 5 页)。

使用\?它来代替空行。

相关内容