インクルードされたファイルに対してのみsetcounterを実行する

インクルードされたファイルに対してのみsetcounterを実行する

現在、次のような状況です。メイン ファイルに Latex ファイルを含めています。このファイルにはすでにいくつかの\section{}-part があります。マスター ファイル内のグローバル カウントを混乱させずに、それらのカウントを再び開始するようにしたいです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に変更され、次にカウンタがリセットされます。\refstepcountersection

編集最初のセクションカウンタ値を自動的に保存します\input

いくつかの欠点: 使用されるたびに\inputセクション カウンターがリセットされます。これが問題になる場合は、一定のしきい値を超えた後にリセットを削除できます。

\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}

ここに画像の説明を入力してください

関連情報