转义地址中的 LaTeX 标记,用于打印一台可以切割的标签打印机

转义地址中的 LaTeX 标记,用于打印一台可以切割的标签打印机

我正在尝试在 Brother_QL_820NWB(一种可以裁切纸张的标签打印机)上打印地址标签。我有一个小脚本,它从用户输入中收集地址数据,然后调用我的 LaTeX 文件。用户输入会导致以下问题(我可以解决其中两个):a.) 一些公司名称对于默认选择的字体来说太长:我使用我在这里找到的一个小 LaTeX 脚本来解决这个问题,该脚本会更改为较小的字体大小,直到文本适合为止。b.) 我想尽可能地将纸张裁切得更紧密:我使用 pdfcrop 来解决这个问题。

这一切都奏效了,但我找不到办法摆脱 Fish & Friends 公司的问题

当 & 被解析且之前没有转义时,这肯定会导致 LaTeX 错误。我希望用 解决我的问题,\detokenize但我不知道如何解决。

用户输入在\addresslabel以下情况下被“收集”,并作为

pdflatex \def\addresslabel{Fish \& Friends \$\%üäöÜÄÖß\\John Doe\\Whateverstreet 123\\12345 Town\\country\\}\input{shipment-label.tex}

那么,如何在保持单行的情况下打印上述内容?如果这能让事情变得更容易,我可以将 \ 替换为其他任何内容。

非常感谢 Juergen

答案1

\detokenize 的正确语法是\detokenize\expandafter{\addresslabel},但是在您的示例中您不需要它(或者它会给出错误的输出),并且您将始终遇到百分比字符的问题。

给一些特殊字符赋予其他 catcode 可能更有意义:

{\catcode`\%=12 \catcode`\&=12 \catcode`\$=12 \gdef\addresslabel{Fish & Friends $\%üäöÜÄÖß\\ John Doe\\ Whateverstreet 123\\ \ \\ 12345 Town\\ country\par}}
 
 \documentclass{article} 
 
 \begin{document} 
 \addresslabel 
 
 \end{document}

答案2

您没有指定您使用的操作系统,或者如果您使用 Linux,则指定哪个终端。假设 Linux 中的 Bash 您需要转义\\并引用整个输入。请注意,您\&需要在和\%或命令序列中转义斜线,例如\addresslabel,但你需要它\\$

$ pdflatex "\def\addresslabel{Fish \& Friends \\$\%üäöÜÄÖß\\\\John Doe\\\\Whateverstreet 123\\\\12345 Town\\\\country\\\\}\documentclass{article}\begin{document}\addresslabel\end{document}"

结果:

在此处输入图片描述

事实上,正如评论中提到的那样,一种更简单的方法是使用单引号而不是转义反斜杠:

$ pdflatex '\def\addresslabel{Fish \& Friends \$\%üäöÜÄÖß\\John Doe\\Whateverstreet 123\\12345 Town\\country\\}\documentclass{article}\begin{document}\addresslabel\end{document}'

相关内容