![强制构建文档超过一页失败](https://linux22.com/image/361366/%E5%BC%BA%E5%88%B6%E6%9E%84%E5%BB%BA%E6%96%87%E6%A1%A3%E8%B6%85%E8%BF%87%E4%B8%80%E9%A1%B5%E5%A4%B1%E8%B4%A5.png)
我有一份不应超过一页长的文档(在本例中是一份简历)。目前:每当我进行更改时,我都必须编译(不确定这是否是正确的术语,我对 tex 还很陌生)该文档,然后打开它并检查它是否超过一页。我希望有一个解决方案,如果它超过一页,它就会简单地阻止它进行编译。
以下是我的序言:
\documentclass[12pt, letterpaper]{article}
\usepackage[letterpaper,margin=0.75in]{geometry}
\usepackage[compact]{titlesec}
\titleformat*{\subsection}{\large\bfseries}
\titlespacing{\section}{0pt}{\parskip}{-\parskip}
\titlespacing{\subsection}{0pt}{\parskip}{-\parskip}
\renewcommand{\familydefault}{\sfdefault}
\renewcommand\labelitemi{$\cdot$}
\pagestyle
答案1
您始终需要编译文档,因为没有编译就无法知道页数。但是,如果您有多个页面,则可以抛出错误:
\documentclass{article}
\usepackage{scrlfile}% Provides \AfterReadingMainAux
\usepackage{lipsum}
\AfterReadingMainAux{%
\ifnum\value{page}>2
\GenericError{}{File \jobname.tex Error: More than one page}{}{}%
\fi
}
\begin{document}
\lipsum[1-5]
%\lipsum[6]
\end{document}
如果删除%
之前的内容\lipsum[6]
,则会出现错误:
./test.tex:14: File test.tex Error: More than one page.
Type H <return> for immediate help.
...
l.14 \end{document}
如果您希望得到警告:
\documentclass{article}
\usepackage{scrlfile}
\usepackage{lipsum}
\AfterReadingMainAux{%
\ifnum\value{page}>2
\GenericWarning{}{File \jobname.tex Warning: Document has
\the\numexpr\value{page}-1\relax\space pages}{}%
\fi
}
\begin{document}
\lipsum[1-5]
\lipsum[6]
\end{document}
将导致警告:
File test.tex Warning: Document has 2 pages on input line 15.
如果您想了解新页面的开始位置:
\documentclass{article}
\usepackage{atbegshi}
\usepackage{lipsum}
\AtBeginShipout{%
\ifnum\value{page}>1
\GenericError{}{File \jobname.tex Warning: Starting page \thepage}{}{}%
\fi
}
\begin{document}
\lipsum
\lipsum
\lipsum
\lipsum
\lipsum
\end{document}
但请注意:由于 TeX 的异步输出,您将无法获得导致第二页、第三页等的单词的信息。您只能获得导致新分页符的命令或段落的信息。因此消息的行号只是一种方法,而不是确切的位置。
答案2
希望这可以帮助:
\documentclass{article}
\usepackage{lipsum}
%http://latex.org/forum/viewtopic.php?t=21514
\newcommand{\bailout}{%
\ifnum\value{page}>1
%\undefinedcommand % uncomment to abort
\typeout{more than one page}
\fi
}
\begin{document}
\lipsum[1-6]
\bailout
\end{document}