需要宏来忽略特定的偶数输入

需要宏来忽略特定的偶数输入

我的文档由(除其他外)如下所示的块组成:

\begin{Solution}{6.7.8,1.2.3}
 ...
\end{Solution}

或者

\begin{Solution}{,1.2.3}
 ...
\end{Solution}

我想定义解决方案环境,以便在设置开关时,块的内容按原样包含(当然,使用 LaTeX 处理),或者如果最后一位数字(上面的“3”)是偶数,则完全省略。此外,如果插入了文本,则应在上面的示例中用完整字符串(“1.2.3”)标记。我对 TeX 了解不够多,甚至不知道从哪里开始。有人愿意帮忙吗?

答案1

您的问题的解决方案可能涉及三个较小的子问题:

  1. 扫描输入参数以找到最后一个数字。
  2. 测试一个数字是否为偶数。
  3. 让 (La)TeX 忽略一段代码。

对于第一个,你可能需要一些 TeX 技巧,也许是像这样

\def\scan#1.#2.{\ifx#2\relax\def\next{#1}\else\def\next{\scan #2.}\fi\next}
\newcommand{\lastnumber}[1]{\scan#1.\relax.}

对于第二项任务,该ifthen包提供了一个\iffodd可能有用的功能。

对于最后一项和第三项任务,看一下verbatim包,其中除其他外,定义了一个comment忽略 LaTeX 代码块的环境。

答案2

至于 Juan 提到的第 3 个子问题:让 (La)TeX 忽略一段代码。

让 TeX 忽略代码块并不难,但以某种方式让它执行可能会更难。我猜实现它的一种方法可能是提前扫描到 \end{Solution} 指令并将沿途遇到的所有标记放入宏中,该宏稍后可以选择扩展。不过我怀疑这不是一件很容易的事情。

相关内容