关闭逐字环境后立即执行的命令

关闭逐字环境后立即执行的命令

我需要使用逐字环境的形式,以便在关闭环境后立即执行另一个命令。特别是我需要类似以下内容 - 假设 moreverb 包 - 但问题并不特定于 moreverb:

\begin{verbatimwrite}{filename}
... stuff ...
\end{verbatimwrite}\somecommand...

大多数逐字辅助包(moreverb、fancyvrb 等)要么丢弃跟在结束环境标签后面的所有字符(moreverb),要么导致错误(fancyvrb)。

有针对这个的解决方法吗? 请注意,将最后一行分成两行不是一个选择!


有没有办法“欺骗” TeX 让其认为实际上存在 EOL 字符,而实际上没有(例如,使用 \scancodes),同时保持与某些逐字功能实现的兼容性?或者,您能否指出“verbatimwrite”功能的(重新)实现,该功能允许在结束标记后使用字符?

解释一下为什么不能分割最后一行:我需要将我的包与 LyX 集成,并且它只允许在其布局样式定义(命令/环境)中使用单行 TeX 代码片段。由于逐字实现和 LyX 布局格式不允许使用多行解决方案,因此将环境的末尾与新命令中的 \somecommand 一起包装是行不通的。

答案1

您可以在命令前插入一个 ASCII 13 字符。例如,使用vim编辑器时,按Ctrl+V然后按Ctrl+ M。您的输入将如下所示:

\documentclass{article}
\usepackage{moreverb}
\def\somecommand{Foo}
\begin{document}
\thispagestyle{empty}
\begin{verbatimwrite}{filename}
... stuff ...
\end{verbatimwrite}^M\somecommand
Bar
\end{document}

但请注意,这^M是显示 ASCII 13 的方式vim,因此它是一个单个字符,而不是字符序列^M

编译该文档会产生所需的输出:

输出

但是我不知道这个解决方案是否对您是否有效,因为我不知道 LyX 是否允许您插入这个控制字符。

相关内容