catchfile(betweentags) 和 obelines

catchfile(betweentags) 和 obelines

我正在写两篇大型文档,其中都包含大量相同的文本。

为了便于维护,我不希望有多余的段落,而是使用 catchfilebetweentags。

一切运行良好,除了 catchfilebetweentags(或者可能是 catchfile)破坏了 obelines 环境。

最小工作示例:

\documentclass[12pt]{report}
\usepackage{catchfilebetweentags}
\usepackage{graphicx}

\begin{document}

\ExecuteMetaData[getfromthisfile.tex]{getthissection}

\begin{obeylines}
  Line 1
  Line 2
\end{obeylines}

\end{document}

要捕获的文件是 getfromthisfile.tex

%<*getthissection>
\begin{obeylines}
  Line 1
  Line 2
\end{obeylines}
%</getthissection>

生成的文档:

Line 1Line 2
Line 1
Line 2

这显然也适用于使用服从线的其他环境。

有什么解决方法或建议可以解决这个问题吗?

答案1

没有记录的obeylines环境;它以某种方式起作用并不意味着它在您尝试使用它的环境中是安全的。

\obeylines的作用是将行尾字符(通常为 5)的类别代码更改为 13(活动字符),并且粗略地说,将此活动字符定义为发出\par

但是这只有在输入文件被读入排版时才有效。虽然catchfilebetweentags你可以得到四行,但是行尾字符在\obeylines起作用之前已经被转换为空格了。

这与 TeX 如何从文件中读取字符以便将其转换成其最喜欢的食物(称为“标记”)有关。

还有一个问题:参数catchfilebetweentags.sty被玩弄了\endlinechar,所以甚至连行尾对应的空格都被弄乱了。这应该算是软件包中的一个错误。

相关内容