我是否应该编辑子文件包以删除不需要的换行符?

我是否应该编辑子文件包以删除不需要的换行符?

我正在使用包含多个注释环境的子文件(我将其用作文本的翻译版本和注释)。

例如:guitarteacher.txt

\documentclass[../resume]{subfiles}
\begin{document}
\begin{English}
Guitar teacher.
\leavevmode
\hrulefill
\small
\begin{annotate}
\begin{itemize}
    \item Example annotation.
\end{itemize}
\normalsize
\leavevmode
\hrulefill
\end{annotate}
\end{English}

\begin{Swedish}
Gitarrlärare.
\leavevmode
\hrulefill
\small
\begin{annotate}
\begin{itemize}
    \item Example annotation.
\end{itemize}
\normalsize
\leavevmode
\hrulefill
\end{annotate}
\end{Swedish}

\end{document}

当我将单个句子或单词导入带有子文件的文档时 - 例如:

\subfile{resume/guitarteacher.txt}

它在后面添加了一个换行符,我想将其删除,如下所示:

稀有吉他

, Privat, 2009 年等

有人告诉我,如果是简单文件,删除子文件内的所有空格可以解决这个问题,如下所示:

\documentclass[./resume.txt]{subfiles}\begin{document}Some text.\end{document}

(看:我可以编辑子文件包以不在每个子文件后包含新行吗?

但在这种情况下,我无法完全压缩文件,因为注释环境不起作用。我收到错误消息,如“抱歉,您的 Latex 代码由于某种原因无法编译”;“参数失控?”,“额外的 },或忘记了 \endgroup”,“您不能在垂直模式下使用 /”,以及“紧急停止”。

可能有某种方法可以安排换行符,这样我就不会收到这些错误,也不会在输出文件中出现换行符,但这不是一个好的长期解决方案。相反,是否可以修复子文件,使其不会添加换行符,除非在\begin{document}和之间\end{document},或者在当前打开的任何注释命令(例如\begin{Swedish}和)之间明确有一个换行符\end{Swedish}

修复这个软件包需要做什么?我应该自己编辑这个软件包吗?这是标准做法吗?这是否非常困难?

答案1

空行(段落)可能源自\end{document}子文件后面的空行。由于给出的示例不完整,我无法确定,但如果您删除子文件末尾的空行,意外换行符可能会消失。

否则,\subfile其行为与关于空格的行为类似\input(至少从 1.4 版开始,2019/10/25)。这意味着以下内容。

为了抑制主文件和子文件内容之间的任何空格,您可以在三个地方使用注释符号:

% main.tex
\documentclass{article}
\usepackage{subfiles}
\begin{document}
text before% <<< HERE <<<
\subfile{sub}% <<< HERE <<<
text after
\end{document}

% sub.tex
\documentclass[main]{subfiles}
\begin{document}
contents of subfile% <<< HERE <<<
\end{document}

或者把所有内容写在同一行:

% main.tex
\documentclass{article}
\usepackage{subfiles}
\begin{document}
text before\subfile{sub}text after
\end{document}

% sub.tex
\documentclass[main]{subfiles}
\begin{document}
contents of subfile\end{document}

在这两种情况下我们得到 在此处输入图片描述

相关内容