表格和宏中的逐字文本

表格和宏中的逐字文本

我有一张带有表格的备忘单,如下所示

\begin{tabular}{l|l}
$k > 0$    &  \verb+k > 0+    \\
$k \geq 0$ &  \verb+k \geq 0+ \\
$\sum_l$   &  \verb+\sum_l+   \\
%etc
\end{tabular}

这里有很多冗余,因为参数verb与表的第一个条目相同。我尝试制作一个宏来删除重复项

\newcommand\code[1]{$#1$& \verb+#1+\\}

但会出现错误。我还尝试使用 detokenize

\newcommand\code[1]{$#1$&\texttt{\detokenize{#1}}\\}

但这样会引入多余的空格。如何定义一个既能生成公式又能生成其逐字代码的宏?

答案1

在此处输入图片描述

您需要逐字阅读该论点,才能看到空格:

\documentclass{article}

\makeatletter
\def\code#1{%
\let\do\@makeother \dospecials
\verbatim@font\@noligs
\@vobeyspaces \frenchspacing 
\catcode`#1\active
\lccode`\~`#1%
\lowercase{\long\def\tmp##1~}{\$##1\$&$\scantokens{##1}$\\}%
\tmp
}

\makeatother

\begin{document}

\begin{tabular}{l|l}
\code|k > 0|
\code|k \geq 0|
\code|\sum_l|
\end{tabular}

\end{document}

或者交换列有点困难:-)

\makeatletter
\def\code#1{%
\bgroup
\let\do\@makeother \dospecials
\@vobeyspaces 
\catcode`#1\active
\lccode`\~`#1%
\lowercase{\long\def\tmp##1~}{\egroup$\scantokens{##1}$&%
\verbatim@font\@noligs
\@vobeyspaces\frenchspacing 
\$##1\$\\}%
\tmp
}

\makeatother

相关内容