我想制作一个表格来显示我定义的一些自定义命令。如果我能做类似下面的事情就好了。
\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
那个符号。