![编译文件时在标题前放置一堆逗号](https://linux22.com/image/360330/%E7%BC%96%E8%AF%91%E6%96%87%E4%BB%B6%E6%97%B6%E5%9C%A8%E6%A0%87%E9%A2%98%E5%89%8D%E6%94%BE%E7%BD%AE%E4%B8%80%E5%A0%86%E9%80%97%E5%8F%B7.png)
我正在做一个大项目,其中包含许多子文件,我想将它们合并到一个主文件中。为此,我使用了独立包,以便能够检查各个文件是否存在错误(如果有)。
我可以正确编译,但在标题之前,我得到了一堆逗号。该数字与导入文件的数量大致相同。这是什么原因造成的?
\documentclass[10pt]{article}
\usepackage[subpreambles=true]{standalone}
\usepackage{mdframed}
\usepackage{hyperref}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage[a4paper, total={6in, 8in}]{geometry}
\usepackage{import}
\providecommand{\tightlist}{%
\setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
\title{test}
\begin{document}
\maketitle
\import{./}{test1.tex}
\import{./}{test2.tex}
\import{./}{test3.tex}
\import{./}{test4.tex}
[26 more imports]
\end{document}
(编辑)导入的文件都有相同的标题,因为它们是用 Python 自动生成的:
\documentclass[float=false,crop=false]{standalone}
\usepackage[subpreambles=true]{standalone}
\usepackage{mdframed}
\usepackage{hyperref}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage[a4paper, total={6in, 8in}]{geometry}
\begin{document}
\section{text}
[...]
\end{document}
有趣的是,我注释掉了所有导入,但逗号仍然出现。当我在 ShareLaTeX 上编译文件时,逗号也会出现。
(编辑 2)这太令人困惑了。我还是 LaTeX 新手,所以我真的不明白为什么我必须编译两次某些东西才能让结果出现在 Texmaker 上。我再次尝试,我注释掉了除第一个之外的所有导入,编译了两次,它出现了一个逗号。两个导入,两个逗号,三个导入,三个逗号。
(编辑 3)JPi 找到了解决方案!这似乎是独立和导入之间一些奇怪的交互。从导入的文件中删除几何线会删除奇怪的逗号。
(编辑4)据 Robert 称,这是由于 LaTeX 中的一个错误。他建议使用
\PassOptionsToPackage{a4paper,total={6in,8in}}{geometry}
在主序言处并删除导入文件中的所有选项。
答案1
这实际上是 LaTeX 的一个故障:在测试某个包是否已加载不同的选项时,它会在选项中的括号组上出错geometry
。这里不是standalone
norimport
也不是 的问题;对于像这样的简单文档,geometry
您会得到相同的虚假逗号(伴随错误):Missing \begin{document}
\documentclass{article}
\usepackage[total={6in,8in}]{geometry}
\usepackage[total={6in,8in}]{geometry}
\begin{document}
\end{document}
geometry
我不知道这个问题是否可以在 LaTeX 中修复,但你可以通过在所有文件中像这样加载来轻松解决它:
\PassOptionsToPackage{a4paper,total={6in,8in}}{geometry}
\usepackage{geometry}
或者像这样:
\usepackage{geometry}
\geometry{a4paper,total={6in,8in}}
或者像这样:
\usepackage[a4paper,width=6in,height=8in]{geometry}
这些都是等价的。
答案2
使用空的 test1.tex 到 test4.tex 进行编译可以正常工作。
\documentclass[10pt]{article}
\usepackage[subpreambles=true]{standalone}
\usepackage{mdframed}
\usepackage{hyperref}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage[a4paper, total={6in, 8in}]{geometry}
\usepackage{import}
\providecommand{\tightlist}{%
\setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
\title{test}
\begin{document}
\author{me}
\title{none}
\maketitle
\import{./}{test1.tex}
\import{./}{test2.tex}
\import{./}{test3.tex}
\import{./}{test4.tex}
[26 more imports]
\end{document}