我正在\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}