主目录显示全局编号,本地目录显示本地编号方案

主目录显示全局编号,本地目录显示本地编号方案

根据问题SOP(标准操作程序)文件的两页编号方案,我得到了这个 MWE。

\documentclass{article}

\usepackage{atenddvi} % added <<<<<<<<<<<<<
\usepackage{lastpage}  % added <<<<<<<<<<<<<
\usepackage[user]{zref}% added <<<<<<<<<<<<<

\usepackage{titletoc}

\usepackage{kantlipsum}% ONLY dummy text

\usepackage{fancyhdr}
\fancypagestyle{firststyle}{% changed <<<<<<<<<<<<<<<<
    \fancyhf{} %clear header and footer
    \fancyfoot[R]{\stepcounter{pageaux}
            \fbox{%
            \begin{tabular}{r}
                Global Page: \thepage/\pageref{LastPage} \\
                SOP Page: \thepageaux/\ref{\currentauxref} \\
        \end{tabular}}
}}
\pagestyle{firststyle}

%%********************************* from  https://tex.stackexchange.com/a/82560/161015
\newcounter{pageaux}
\def\currentauxref{PAGEAUX1}
\makeatletter
\newcommand{\resetpageaux}{%
    \clearpage
    \edef\@currentlabel{\thepageaux}\label{\currentauxref}%
    \xdef\currentauxref{PAGEAUX\thepage}%
    \setcounter{pageaux}{0}}
\AtEndDvi{\edef\@currentlabel{\thepageaux}\label{\currentauxref}}
\makeatother
%%*********************************

\begin{document}
    
    \thispagestyle{empty}   
    \tableofcontents
    \newpage
    
    \addcontentsline{toc}{section}{SOP 1 - Administration}
        
    \resetpageaux% reset aux page numbers
    
    \startlist{toc}
    \printlist{toc}{}{\section*{Contents - SOP 1}}
    
    \section{OBJECTIVE}
    \kant[9]
    \section{RESPONSIBILITY}
    \kant[2]
    \section{PROCEDURES}
    \kant[9]
    \stopcontents
    
    \newpage
    
    \setcounter{section}{0}
    \addcontentsline{toc}{section}{SOP 2 - Production}
    
    \resetpageaux% reset aux page numbers
    
    \startlist{toc}
    \printlist{toc}{}{\section*{Contents - SOP 2}}
    
    \section{OBJECTIVE}
    \kant[1-8]
    \section{RESPONSIBILITY}
    \kant[1-8]
    \section{PROCEDURES}
    \kant[1-8]
    \stopcontents
    
\end{document}

有没有办法让主目录显示全局编号,让每个 SOP 的目录显示本地编号?

答案1

该解决方案需要两个步骤。(不使用titletoc

在第一步中,编译各个 SOP 文件,生成要在第二步中使用的各个 ToC 文件。为方便起见,每个 SOP 的内容都放在单独的文件中,如下所示SOP<number>content.tex

请注意,每个 SOP 的第一个本地页面为 1,因为它应该是本地页码。

第二步创建包含所有 SOP 内容的最终文档,生成全局 TOC 并使用第一步创建的本地 ToC。

所有文件必须位于同一目录中。

A

C

文件SOP1.tex(一页)

%%% file SOP1.tex

\documentclass{article}

\usepackage{kantlipsum}% ONLY dummy text

\begin{document}
    \tableofcontents
     \input{\jobname contents}
\end{document

文件SOP2.tex(9页)

%%% file SOP2.tex

\documentclass{article}

\usepackage{kantlipsum}% ONLY dummy text

\begin{document}
    \tableofcontents
     \input{\jobname contents}
\end{document}

文件SOP1contents.tex

%%% file SOP1contents.tex

\addcontentsline{toc}{section}{SOP 1 - Administration}          
\section{OBJECTIVE}
\kant[9]
\section{RESPONSIBILITY}
\kant[2]
\section{PROCEDURES}
\kant[9]

文件SOP2contents.tex

%%% file SOP2contents.tex

\addcontentsline{toc}{section}{SOP 2 - Production}  
\section{OBJECTIVE}
\kant[1-8]
\section{RESPONSIBILITY}
\kant[1-8]
\section{PROCEDURES}
\kant[1-8]

和!main.tex位于同一目录中的文件(11页)SOP1.texSOP2.tex

%%  File main.tex

\documentclass{article}

\usepackage{atenddvi} % added <<<<<<<<<<<<<
\usepackage{lastpage}  % added <<<<<<<<<<<<<
\usepackage[user]{zref}% added <<<<<<<<<<<<<
    
\usepackage{kantlipsum}% ONLY dummy text

\usepackage{fancyhdr}
\fancypagestyle{firststyle}{% changed <<<<<<<<<<<<<<<<
    \fancyhf{} %clear header and footer
    \fancyfoot[R]{\stepcounter{pageaux}
        \fbox{%
            \begin{tabular}{rr}
                Global Page:&\thepage/\pageref{LastPage} \\
                SOP Page:   & \thepageaux/\ref{\currentauxref} \\
        \end{tabular}}
}}
\pagestyle{firststyle}

%%********************************* from  https://tex.stackexchange.com/a/82560/161015
\newcounter{pageaux}
\def\currentauxref{PAGEAUX1}
\makeatletter
\newcommand{\resetpageaux}{%
    \clearpage
    \edef\@currentlabel{\thepageaux}\label{\currentauxref}%
    \xdef\currentauxref{PAGEAUX\thepage}%
    \setcounter{pageaux}{0}}
\AtEndDvi{\edef\@currentlabel{\thepageaux}\label{\currentauxref}}
\makeatother
%%*********************************

\begin{document}

    \thispagestyle{empty}   
    \tableofcontents
    \newpage    
    
    \resetpageaux% reset aux page numbers   
        
    \input{SOP1.toc} % input toc of SOP 1 <<<<<<<<<<<<<<<<<<<<<,,
    \input{SOP1contents}
            
    \newpage
    \setcounter{section}{0}     
    \resetpageaux% reset aux page numbers   
        
    \input{SOP2.toc}  % input toc of SOP 2 <<<<<<<<<<<<<<<<<<<<<<<<<        
    \input{SOP2contents}
        
\end{document}

相关内容