包含多个 .tex 文件时出现问题

包含多个 .tex 文件时出现问题

我正在\include处理多个.tex文件,并使用在网上找到的一个包来在两列文档中使用单列摘要(long2.sty):

%%
%% This is file `long2.sty'.
%%
%% Author: Tomas "tohecz" Hejda <[email protected]>
%%
%% Licenced under LaTeX-Project Public License version 1.3 or newer.
%% 
\NeedsTeXFormat{LaTeX2e}[1995/06/01]
\ProvidesPackage{long2}[2012/08/19 v0.1 long2: breakable one-column preamble in a two-column document]

\newlength\longtwo@top
\newlength\longtwo@bottom

\newsavebox\longtwo@box
\def\longtwo@repeat{%
    \longtwo@column[{\@twocolumnfalse
    \ifdim\ht\longtwo@box>1.00\textheight%1
      \begingroup
      \vbadness10000
      \setbox0\vsplit\longtwo@box to 1.00\textheight%1
      \setbox1\vbox{\unvbox\longtwo@box}
      \global\setbox\longtwo@box\vbox{\unvbox1}
      \setbox2\vbox to \textheight{%
        \unvbox0
      }
      \ht2=0.9\textheight
      \box2
      \endgroup
    \else
      \ifdim\ht\longtwo@box>0.84\textheight
        \global\let\longtwo@repeat\clearpage
      \else
        \global\let\longtwo@repeat\relax
      \fi
      \unvbox\longtwo@box
      \vspace{15pt plus 15pt}
    \fi
    }]%
  \longtwo@repeat
}

\long\def\longtwo@[#1]{%
  \begingroup
    \let\longtwo@column\twocolumn
    \let\longtwo@mkttl\maketitle
    \def\maketitle{
      \begingroup
      \let\newpage\relax
      \longtwo@mkttl
      \endgroup
    }
    \longtwo@column[{\@twocolumnfalse
    \global\setbox\longtwo@box\vbox{#1}%
    \ifdim\ht\longtwo@box>\textheight
      \begingroup
      \vbadness10000
      \setbox0\vsplit\longtwo@box to 1.00\textheight%1
      \setbox1\vbox{\unvbox\longtwo@box}%
      \global\setbox\longtwo@box\vbox{\unvbox1}%
      \setbox2\vbox to \textheight{%
        \unvbox0
      }
      \ht2=0.9\textheight
      \box2
      \endgroup
    \else
      \ifdim\ht\longtwo@box>0.87\textheight
        \global\let\longtwo@repeat\clearpage
      \else
        \global\let\longtwo@repeat\relax
      \fi
      \unvbox\longtwo@box
    \fi
    }]%
    \longtwo@repeat
  \endgroup
}

\def\longtwocolumn{\@ifnextchar[\longtwo@\twocolumn}

\endinput
%%
%% End of file `long2.sty'.
%%

第一个\include效果很好,但其他的摘要与文本重叠。有什么想法吗?有没有办法让 LaTeX 每次打开文件时都重置所有内容并在另一个\include文档中开始一个新文档?

long2.sty能够将过长的摘要分成两页。这就是我使用它的原因。

我的代码不是很复杂,其中的部分\include是:

[...]
\pagestyle{fancy}
\clearpage
\resetearcontadores
\include{file1}
\resetearcontadores
\include{file2}
\resetearcontadores
\include{file3}
\resetearcontadores
\include{file4}
\clearpage
\pagestyle{empty}
[...]

\resetearcontadores命令只是重置图形、表格等计数器。如果您需要更多代码(前言、正文或其他内容),请问我,我只是不知道该向您展示什么,因为代码非常简单。

我知道该\twocolumn命令接受可选参数,但它不会分成页面并且您不能使用任何环境。

答案1

第2节的初始排版。

在此处输入图片描述

如果您能提供完整的文档(如下所示),那将非常有帮助,这样任何试图提供帮助的人就不必自己制作文档,然后尝试猜测您遇到的问题。但是...

\include该问题与您看到的相同内容\input或实际上所有内容都在一个文件中无关,但是下面的示例使用了包含。

long2代码显然是为了制作标题页,并且与大多数 LaTeX 标题处理一样,它不设计为多次使用,因为它会在使用过程中重新定义自身。

但是,如果在加载包后保存初始定义并在每次使用前重置它,它似乎可以正常工作。

添加代码后重置文档\longtwo@repeat

在此处输入图片描述

\begin{filecontents}{\jobname a.tex}
\begin{longabstract}
AAAAAA AAAAAA AAAAAA 
\c

\b\b\c
\end{longabstract}
\section{Something}
\a\a\a\c\b
\end{filecontents}
\begin{filecontents}{\jobname b.tex}
\begin{longabstract}
BBB BBB BBB
\c

\a\a\a\c\b
\end{longabstract}
\section{Something Else}
SSS SSS SSS SSS SSS
\b\c\b\a\a\a
\end{filecontents}


\documentclass[twocolumn,a5paper]{article}
\pdfpagewidth\paperwidth
\pdfpageheight\paperheight
\usepackage{long2,environ}
\def\a{\stepcounter{enumi}One two three four five \roman{enumi}. }
\def\b{Red yellow blue green purple orange. \a\a\a\a}
\def\c{\b\b\a Monday tuesday wednesday thursday friday saturday sunday. 
\b\b\b\a England France Germany Spain Poland Canada. \b\b}

\makeatletter
\let\xlongtwo@repeat\longtwo@repeat

\NewEnviron{longabstract}
{\let\longtwo@repeat\xlongtwo@repeat
 \longtwocolumn[\begin{abstract}\BODY\end{abstract}]}{}

\makeatother

\begin{document}
\include{\jobname a}
\include{\jobname b}
\end{document}

相关内容