Я придумал этот MWE, когда пытался организовать свой код в несколько файлов разделов, чтобы ускорить компиляцию журнальной статьи ( section
s, а не chapter
s!):
\documentclass{article}
\usepackage{filecontents}
%\usepackage{newclude}
\begin{filecontents}{\jobname-ext.tex}
\section{A section}
\label{sec:A}
References to this section \ref{sec:A} do not work.
\end{filecontents}
\begin{document}
\begingroup
\let\clearpage\relax
\include{\jobname-ext}
\endgroup
\section{Another section}
No page break after section \ref{sec:A}, please!
\end{document}
Удивительно (сначала), но результат не имеет правильных ссылок. Менее удивительно, чтоПроблема перекрестных ссылок при использовании команды include t для включения нескольких файловиСправочная этикетка с вложенным файлом и свободной прозрачной страницей, в частности,этот ответ.
Теперь, глядя на эти вопросы выше, а такжеПовторная активация «\clearpage» в LaTeX после его отключения с помощью «\let\clearpage\relax», ни в одном ответе или комментарии (или вопросе) не упоминается пакет newclude
, который предлагает \include*
команду, которая не выдает \clearpage
. Интересно, можно ли использовать этот пакет, так как он не был обновленс 1999 года.
Вот еще один фрагмент кода, который работает без переопределения \clearpage
:
\documentclass{article}
\usepackage{filecontents}
\usepackage{newclude}
\begin{filecontents}{\jobname-ext.tex}
\section{A section}
\label{sec:A}
References to this section \ref{sec:A} DO work.
\end{filecontents}
\begin{document}
\include*{\jobname-ext}
\section{Another section}
No page break after section \ref{sec:A}, please!
\end{document}
А вот еще два, которые этого не делают:
\documentclass{article}
\makeatletter
\def\include#1{\relax
\ifnum\@auxout=\@partaux
\@latex@error{\string\include\space cannot be nested}\@eha
\else \@include#1 \fi}
\def\@include#1 {%
%\clearpage
\if@filesw
\immediate\write\@mainaux{\string\@input{#1.aux}}%
\fi
\@tempswatrue
\if@partsw
\@tempswafalse
\edef\reserved@b{#1}%
\@for\reserved@a:=\@partlist\do
{\ifx\reserved@a\reserved@b\@tempswatrue\fi}%
\fi
\if@tempswa
\let\@auxout\@partaux
\if@filesw
\immediate\openout\@partaux #1.aux
\immediate\write\@partaux{\relax}%
\fi
\@input@{#1.tex}%
%\clearpage
\@writeckpt{#1}%
\if@filesw
\immediate\closeout\@partaux
\fi
\else
\deadcycles\z@
\@nameuse{cp@#1}%
\fi
\let\@auxout\@mainaux}
\makeatother
\usepackage{filecontents}
\begin{filecontents}{\jobname-ext.tex}
\section{A section}
\label{sec:A}
References to this section \ref{sec:A} do not work.
\end{filecontents}
\begin{document}
\include{\jobname-ext}
\section{Another section}
No page break after section \ref{sec:A}, please!
\end{document}
и
\documentclass{article}
\usepackage{xpatch}
\makeatletter
\patchcmd{\@include}{\clearpage}{}{}{error}
\patchcmd{\@include}{\clearpage}{}{}{error}
\makeatother
\usepackage{filecontents}
\begin{filecontents}{\jobname-ext.tex}
\section{A section}
\label{sec:A}
References to this section \ref{sec:A} do not work.
\end{filecontents}
\begin{document}
\include{\jobname-ext}
\section{Another section}
No page break after section \ref{sec:A}, please!
\end{document}