内联 LaTeX 代码和代码结果(类似于 showexpl)

内联 LaTeX 代码和代码结果(类似于 showexpl)

我想编写一个类似于 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会返回“已抓取”参数中使用的标记,因此会引入空格。此外,您无法将\verbverbatim内容作为宏参数传递(请参阅为什么逐字在...内不起作用?)。可能还有其他因素也会破坏这一点。


另一种方法是先逐字读取参数,然后使用\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}

相关内容