我需要使用逐字环境的形式,以便在关闭环境后立即执行另一个命令。特别是我需要类似以下内容 - 假设 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 是否允许您插入这个控制字符。