生成代码示例

生成代码示例

我想制作一个表格来显示我定义的一些自定义命令。如果我能做类似下面的事情就好了。

\documentclass{article}

\newcommand{\reals}{\ensuremath{\mathbf{R}}}
\newcommand{\CodeExample}[1]{\verb~#1~ & #1 \\}

\begin{document}

$$
\begin{array}{r@{\qquad}r}
    \CodeExample{\reals}
\end{array}
$$

\end{document}

我希望表格的左列是 LaTeX 代码,右列是排版输出。但是,我的代码将排版输出放在两列中。有什么办法可以实现这一点吗,还是我需要手动输入表格的两列?

感谢大家的帮助!我还想做一件事:定义一个环境来生成代码示例表。这是我的尝试。

\documentclass{article}
    \usepackage{array,xparse}
    \NewDocumentCommand{\CodeExample}{v}{#1 & \scantokens{#1} \\}
    \newenvironment{CodeExamples}[1]
    {
        \begin{center}
            \begin{tabular}{|>{\ttfamily}l|>{$}l<{$}|}
                \hline
    }
    {
                \hline
            \end{tabular}
        \end{center}
    }

    \newcommand{\reals}{\ensuremath{\mathbf{R}}}

\begin{document}

\begin{CodeExamples}
    \CodeExample{\reals}
    \CodeExample{\reals^{n}}
\end{CodeExamples}

\begin{CodeExamples}
    \ \CodeExample{\reals}
    \CodeExample{\reals^{n}}
\end{CodeExamples}

\end{document}

我的环境有两个问题。首先,我需要在 reals 宏的定义中使用 Ensuremath;否则,我会收到“mathbf 仅在数学模式下允许”错误。其次,环境似乎吃掉了输入的第一个字符:这就是我在 CodeExamples 环境的第二个示例中添加额外空格的原因。

答案1

如果您有一个较新的 TeX 发行版,那么这可以满足您的要求。

\documentclass{article}
\usepackage{array,xparse}
\NewDocumentCommand{\CodeExample}{v}{#1 & \scantokens{#1}}

\newcommand{\reals}{\mathbf{R}}

\begin{document}

\begin{center}
\begin{tabular}{>{\ttfamily}l >{$}l<{$}}
\CodeExample{\reals}
\end{tabular}
\end{center}

\end{document}

参数v类型表示“逐字吸收”,然后\scantokens重新读取输入。

表格有两列,第一列使用打字机类型,第二列是数学模式。

在此处输入图片描述

切勿在 LaTeX 中使用$$,请参阅为什么 \[ ... \] 比 $$ ... $$ 更可取?

我永远不会使用\ensuremath那个符号。

相关内容