我想编写一个类似于 showexpl 的宏,但只是以我可以使用的方式重现 LaTeX 代码和代码结果排队。
\documentclass{article}
\usepackage{fancyvrb}
\begin{document}
I want a macro that produces something like ``\verb|$\bar\mathbf{x}$| produces $\bar\mathbf{x}$''.
\end{document}
这可能吗?
答案1
\documentclass{article}
\usepackage{fancyvrb}
\def\showvrb#1{%
``\texttt{\detokenize{#1}} produces #1''%
}
\begin{document}
I want a macro that produces something like ``\verb|$\bar\mathbf{x}$| produces $\bar\mathbf{x}$''.
I want a macro that produces something like \showvrb{$\bar\mathbf{x}$}.
\end{document}
@Werner 对该版本做出了非常相似的回答(已删除)\detokenize
,根据他的建议,我将添加他在此提出的一些额外评论:
但请注意,这\detokenize
会返回“已抓取”参数中使用的标记,因此会引入空格。此外,您无法将\verb
或verbatim
内容作为宏参数传递(请参阅为什么逐字在...内不起作用?)。可能还有其他因素也会破坏这一点。
另一种方法是先逐字读取参数,然后使用\scantokens
它重新解析以获得正常含义:
\documentclass{article}
\usepackage{fancyvrb}
\makeatletter
\def\showvrbb{\begingroup\let\do\@makeother \dospecials\showvrbbx}
\makeatother
\def\showvrbbx#1{%
\def\tmp##1#1{%
``\texttt{##1} \endgroup produces \scantokens{##1}''}%
\tmp}
\begin{document}
I want a macro that produces something like ``\verb|$\bar\mathbf{x}$| produces $\bar\mathbf{x}$''.
I want a macro that produces something like \showvrbb|$\bar\mathbf{x}$|.
\end{document}