使用 \input 命令时输出不同

使用 \input 命令时输出不同

假设我们需要创建一个由两条水平线及其下方的名称组成的合约签名块。main.tex

\documentclass[12pt]{article}
\usepackage[a5paper]{geometry}
\geometry{verbose,tmargin=2cm,bmargin=3cm,lmargin=2cm,rmargin=2cm}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\begin{document}
\noindent\makebox[.45\textwidth]{\hrulefill} \hfill\makebox[.45\textwidth]{\hrulefill}

\noindent\makebox[.45\textwidth][l]{Director 1} \hfill\makebox[.45\textwidth][l]{Director 2}
\end{document}

输出:

在此处输入图片描述 一切都很好。但是当我将代码移到单独的文件中signature.tex并将对它的引用放入主文件中时:

\documentclass[12pt]{article}
\usepackage[a5paper]{geometry}
\geometry{verbose,tmargin=2cm,bmargin=3cm,lmargin=2cm,rmargin=2cm}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\begin{document}
\input{signature.tex}
\end{document}

第二个人的名字向左移动:

在此处输入图片描述

出了什么问题?如何修复?在 Windows XP 上使用 TeX Live 2017。

答案1

因为\input是在输入内容的末尾添加一个空格,所以这里就Director 1....Director 2一行。

您可以通过两种方式避免这种情况:
任何一个%在输入文件的最后一行添加signature.tex,例如:

\noindent\makebox[.45\textwidth]{\hrulefill} \hfill\makebox[.45\textwidth]{\hrulefill}

\noindent\makebox[.45\textwidth][l]{Director 1} \hfill\makebox[.45\textwidth][l]{Director 2}%

或者\unskip在命令后直接添加\input

\documentclass[12pt]{article}
\usepackage[a5paper,showframe]{geometry}
\geometry{verbose,tmargin=2cm,bmargin=3cm,lmargin=2cm,rmargin=2cm}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\begin{document}
\input{signature.tex}\unskip
\end{document}

在此处输入图片描述
(添加框架以显示页边距)


哈拉尔德解释得很好在这里的评论中

最后一行是否以换行符结尾并不重要。重点是,TeX 将文件视为由多行组成的。作为标记化过程的一部分,\endlinechar在每行末尾插入一个字符,其代码为 的值(除非该行以注释或控制序列结尾)。

相关内容