将命令转储为可读文本?

将命令转储为可读文本?

是否可以将命令的扩展形式转储为文本?

例如当我写一个宏时

\newcommand{\mytest}[1]{\texttt{#1}}

我想定义一个宏,\mydump这样

\mydump{\mytest{Hello World}}

\mytest{Hello World}在输出文件中创建一个文字文本。

在尝试自定义宏时,我有时会遇到相当无用的错误消息。能够逐级查看有问题的命令如何展开将大有帮助。

我知道有类似这样的命令\show,但这些命令是面向命令行的。然而,通常我会在 LaTeX 编辑器中工作,默认情况下它甚至不显示日志文件,例如 TeXStudio 或带有 AUCTeX 的 Emacs。因此,更实际的解决方案是将类似信息放入输出 pdf 文件中。

我尝试通过结合\verb和来生成所需的输出\expandafter,但这没有给出可行的结果(由于 LaTeX 将文本解析为标记并将标记扩展为宏的方式)。

答案1

这里有两个版本,它们的行为略有不同,具体取决于您真正寻求的内容。

\documentclass{article}
\usepackage[T1]{fontenc}
\newcommand{\mytest}[1]{\texttt{#1}}
\def\mydump#1{\detokenize\expandafter{#1}}
\def\mydumplit#1{\detokenize{#1}}
\begin{document}
\mydump{\mytest{Hello World}}

\mydumplit{\mytest{Hello World}}
\end{document}

在此处输入图片描述

当然,\detokenize也有一些限制。你不能%在参数中包含,括号必须匹配,等等。

相关内容