\documentclass{article}
\usepackage{pst-barcode}
\begin{document}
\begin{pspicture}
\psbarcode{\input{\jobname.tex}}{}{qrcode}
\end{pspicture}
\end{document}
我尝试\expandafter
在 之前和之后放置 s \psbarcode
,但没有效果。它可以很好地处理控制序列,但它会扩展它们。我怎样才能让它完全不扩展其参数(当然,保存\input
)并逐字逐句地执行它?
该特定文档的编码是
答案1
开始:使用catchfile
包将文件内容写入宏,然后该宏将展开一次并进行去标记化\psbarcode
。
由于某种原因,我的扫描仪没有显示任何\
s、\b
s 或\t
s。我不知道这是否是\psbarcode
我的扫描仪的问题,或者扫描仪将它们解释为某种转义序列(德语列表)。但是,该序列\string\\
正确显示为\
。
此外,空行显示为\par
(或者更确切地说par
)。
代码
\documentclass{article}
\usepackage{pst-barcode,catchfile}
\CatchFileDef\myFile{\jobname.tex}{}
\makeatletter\let\TeXinput\@@input\makeatother
\begin{document}
\ttfamily
\meaning\myFile
\begin{pspicture}
\expandafter\psbarcode\expandafter{\detokenize\expandafter{\myFile}\string\\}{}{qrcode}
% fails with "I can't find file" error
% \expandafter\psbarcode\expandafter
% {\detokenize\expandafter{\TeXinput\jobname.tex}}{}{qrcode}
\end{pspicture}
\end{document}
输出
答案2
这没有任何实际意义!PostScript 和 TeX 有不同的特殊字符。例如:TeX 代码中)
没有对应字符的单个字符将破坏 PostScript 代码。是 PostScript 字符串的结束字符;必须用 进行转义。但这在 TeX 中有其他含义。其他字符也一样。(
)
\)
您需要一个预处理器来转义)
TeX 文件中的字符。但是,如果您的 TeX 源中没有单个字符,)
则可以使用可选参数file
(需要最新的 TL2013):
\documentclass{article}
\usepackage{pst-barcode,fancyvrb}
\begin{document}
\VerbatimInput{\jobname.tex}% test
\begin{pspicture}(2in,2in)
\psbarcode[file]{\jobname.tex}{}{qrcode}
\end{pspicture}
\end{document}