У меня сейчас следующая ситуация: я включаю Latex-файл в свой основной файл. В этом файле уже есть несколько \section{}
частей. Теперь я хочу, чтобы их подсчет начинался 1
снова, но не нарушая при этом глобальный подсчет в моем основном файле. Я попробовал следующее:
\subsection{First}
\setcounter{section}{0}
\input{first_file}
\subsection{Second}
\setcounter{section}{0}
\input{second_file}
Это работает для сброса счетчика, но это также портит мой глобальный подсчет. Есть ли способ сбросить счетчик, не портя глобальный документ? Я не хочу менять включенные файлы, и желательно иметь портативное решение.
Редактировать: Объяснение для портинга: Что я получаю:
1
2
3
\begin{input}
1
2
\end{input}
3
4
5
Что я хочу:
1
2
3
\begin{input}
1
2
\end{input}
4
5
6
решение1
Определите вспомогательный счетчик и используйте его для временного хранения номера раздела.
Затем используйте \inputreset{file}
для ввода файла, в котором вы хотите сбросить номер уравнения.
Однако, вам придетсябольшойпроблемы, как только вы пытаетесь загрузить hyperref
.
\newcounter{storedsection}
\newcommand{\inputreset}[1]{%
\setcounter{storedsection}{\value{section}}%
\setcounter{section}{0}%
\input{#1}%
\setcounter{section}{\value{storedsection}}%
}
решение2
\input
Это использует временный счетчик для хранения значения счетчика раздела перед использованием первого . Кроме того, \input
команда изменяется на \refstepcounter
входной счетчик, который затем сбрасывает section
счетчик в свою очередь.
РедактироватьАвтоматическое сохранение значения счетчика раздела для первого \input
.
Недостаток: Каждый раз \input
при использовании if сбрасывается счетчик секций. Если это проблема, можно убрать сброс после некоторого порога.
\documentclass{article}
\usepackage{etoolbox}
\usepackage{xpatch}
\usepackage[hypertexnames=false]{hyperref}
\newcounter{inputfilecounter}
\newcounter{storesection}
\xpretocmd{\input}{%
\ifnumequal{\value{inputfilecounter}}{0}{%
\setcounter{storesection}{\value{section}}%
}{}%
\refstepcounter{inputfilecounter}
}{}{}
\newcommand{\RestoreSectionCounter}{%
\setcounter{section}{\value{storesection}}%
}
\makeatletter
\@addtoreset{section}{inputfilecounter}
\makeatother
\begin{document}
\tableofcontents
\section{Regular}
\clearpage
\input{firstfile}
\clearpage
\input{secondfile}
\RestoreSectionCounter
\clearpage
\section{Continued regular sections}
\end{document}