如何获取某个章节/小节的页码?

如何获取某个章节/小节的页码?

我有一个文档,我想Contents对其进行自定义,所以我不想使用\tableofcontents,而是只想获取章节和子章节的页数并将它们放入表中,因此第 1 页...第 7 页应该是实际页码。如何做到这一点?

\documentclass{article}       
\usepackage[utf8]{inputenc}   
\usepackage[russian]{babel}   
\usepackage{tabularx}   
\begin{document}       
\begin{tabularx}{\textwidth}{|X|X|X|}   
\hline    
 Разделы & & Страницы \\ \hline   
 Номер & Название & \\ \hline   
 1. & Отрасль применения & page 1 \\ \hline   
 2. & Ответственные лица & page 2 \\ \hline   
 3. & Нормативная база & page 3 \\ \hline   
 4. & Материальная база & page 4 \\ \hline   
 5. & Определения и сокращения & page 5 \\ \hline  
 6. & Основная часть & page 6  \\ \hline   
 7. & Конечные выводы, рекомендации & page 7 \\ \hline    
\section{\large \textbf{\textsc{Отрасль применения}}}    
\section{\large \textbf{\textsc{Ответственные лица}}}    
\section{\large \textbf{\textsc{Нормативная база}}}    
\section{\large \textbf{\textsc{Материальная база}}}    
\subsection{\large \textbf{\textsc{Основные средства}}}    
\subsection{\large \textbf{\textsc{Химические средства}}}   
\section{\large \textbf{\textsc{Определения и сокращения}}}   
\section{\large \textbf{\textsc{Основная часть}}}   
\section{\large \textbf{\textsc{Конечные выводы / рекомендации}}}      
\end{tabularx}   
\end{document}

答案1

现在它可以工作了——如果需要的话,可以自动设置章节标题和超链接。

\documentclass{article}
\usepackage[lmargin=1.5cm,rmargin=1.5cm]{geometry}

\usepackage{blindtext}
\usepackage{array}
\usepackage{longtable}
\usepackage{tabularx}
\usepackage{xpatch}
\usepackage{xparse}

\newif\ifhyperrefloaded

\usepackage[hypertexnames=true]{hyperref}

\makeatletter
\@ifpackageloaded{hyperref}{\hyperrefloadedtrue}{\hyperrefloadedfalse}

\newcommand{\PhantomSection}{%
  \ifhyperrefloaded
  \phantomsection%
  \fi
}


\def\@startmytoc#1#2{%
  \begingroup
  \makeatletter
  \renewcommand{\arraystretch}{1.5}%
  \centering

  % Table format may be changed%%%
  \begin{tabularx}{0.5\linewidth}{|p{1cm}|X|r|}%
    \multicolumn{3}{c}{\Large \bfseries #2}
    \tabularnewline
    \multicolumn{3}{c}{}\tabularnewline[0.5ex]
    \hline
    \@input{\jobname.#1}%  Input the ToF or ToT file 
  \end{tabularx}%
  \if@filesw%
  \expandafter\newwrite\csname tf@#1\endcsname%
  \immediate\openout \csname tf@#1\endcsname \jobname.#1\relax%
  \fi%

  \endgroup
}

\newcommand{\mytableofcontents}{%
  \cleardoublepage
  \PhantomSection%
  \@startmytoc{tocm}{\contentsname}%
}%


\def\@sect#1#2#3#4#5#6[#7]#8{%
  \def\@@tempa@@{#1}%
  \def\@@tempa@section{section}%
  \ifnum #2>\c@secnumdepth
    \let\@svsec\@empty
  \else
    \refstepcounter{#1}%
    \protected@edef\@svsec{\@seccntformat{#1}\relax}%
  \fi
  \@tempskipa #5\relax
  \ifdim \@tempskipa>\z@
    \begingroup
      #6{%
        \@hangfrom{\hskip #3\relax\@svsec}%
          \interlinepenalty \@M #8\@@par}%
    \endgroup
    \csname #1mark\endcsname{#7}%
    \ifx\@@tempa@@\@@tempa@section
    \addtocontents{tocm}{%
      \protect\writemytocline{\thesection}{#7}{\thepage}% 
    }%
    \fi
    \addcontentsline{toc}{#1}{%
      \ifnum #2>\c@secnumdepth \else
      \protect\numberline{\csname the#1\endcsname}%
      \fi
      #7}%
  \else
    \def\@svsechd{%
      #6{\hskip #3\relax
        \@svsec #8}%
      \csname #1mark\endcsname{#7}%
      \ifx\@@tempa@@\@@tempa@section
      \addtocontents{tocm}{%
        \protect\writemytocline{\thesection}{#7}{\thepage}% 
      }%
      \fi
      \addcontentsline{toc}{#1}{%
        \ifnum #2>\c@secnumdepth \else
          \protect\numberline{\csname the#1\endcsname}%
          \fi
        #7}}%
  \fi
  \@xsect{#5}}


\newcommand{\writemytocline}[3]{%
  #1 & #2 &
  \ifhyperrefloaded 
  \protect\hyperlink{section.#1}{#3}%
  \else
  #3%
  \fi
  \tabularnewline
  \hline
}


\makeatother

\begin{document}
\mytableofcontents

\section{A section}
\subsection{A subsection}
\blindtext[10]
\section{Another section}
\blindtext[10]
\section[Short title]{Yet another section}

\end{document}

俄文版

\documentclass{article}
\usepackage[lmargin=1.5cm,rmargin=1.5cm]{geometry}

\usepackage[utf8]{inputenc}   
\usepackage[russian]{babel}   

\usepackage{blindtext}
\usepackage{array}
\usepackage{tabularx}
\usepackage{xpatch}
\usepackage{xparse}



\newif\ifhyperrefloaded

\usepackage[hypertexnames=true]{hyperref}

\makeatletter
\@ifpackageloaded{hyperref}{\hyperrefloadedtrue}{\hyperrefloadedfalse}

\newcommand{\PhantomSection}{%
  \ifhyperrefloaded
  \phantomsection%
  \fi
}


\def\@startmytoc#1#2{%
  \begingroup
  \makeatletter
  \renewcommand{\arraystretch}{1.5}%
  \centering

  % Table format may be changed%%%
  \begin{tabularx}{\linewidth}{|p{2cm}|X|r|}%
    \hline
    Разделы & & Страницы \tabularnewline 
    \hline   
    Номер & Название & \tabularnewline
    \hline   
    \@input{\jobname.#1}%  Input the ToF or ToT file 
  \end{tabularx}%
  \if@filesw%
  \expandafter\newwrite\csname tf@#1\endcsname%
  \immediate\openout \csname tf@#1\endcsname \jobname.#1\relax%
  \fi%

  \endgroup
}

\newcommand{\mytableofcontents}{%
  \cleardoublepage
  \PhantomSection%
  \@startmytoc{tocm}{\contentsname}%
}%


\def\@sect#1#2#3#4#5#6[#7]#8{%
  \def\@@tempa@@{#1}%
  \def\@@tempa@section{section}%
  \ifnum #2>\c@secnumdepth
    \let\@svsec\@empty
  \else
    \refstepcounter{#1}%
    \protected@edef\@svsec{\@seccntformat{#1}\relax}%
  \fi
  \@tempskipa #5\relax
  \ifdim \@tempskipa>\z@
    \begingroup
      #6{%
        \@hangfrom{\hskip #3\relax\@svsec}%
          \interlinepenalty \@M #8\@@par}%
    \endgroup
    \csname #1mark\endcsname{#7}%
    \ifx\@@tempa@@\@@tempa@section
    \addtocontents{tocm}{%
      \protect\writemytocline{\thesection}{#7}{\thepage}% 
    }%
    \fi
    \addcontentsline{toc}{#1}{%
      \ifnum #2>\c@secnumdepth \else
      \protect\numberline{\csname the#1\endcsname}%
      \fi
      #7}%
  \else
    \def\@svsechd{%
      #6{\hskip #3\relax
        \@svsec #8}%
      \csname #1mark\endcsname{#7}%
      \ifx\@@tempa@@\@@tempa@section
      \addtocontents{tocm}{%
        \protect\writemytocline{\thesection}{#7}{\thepage}% 
      }%
      \fi
      \addcontentsline{toc}{#1}{%
        \ifnum #2>\c@secnumdepth \else
          \protect\numberline{\csname the#1\endcsname}%
          \fi
        #7}}%
  \fi
  \@xsect{#5}}


\newcommand{\writemytocline}[3]{%
  #1 & #2 &
  \ifhyperrefloaded 
  \protect\hyperlink{section.#1}{#3}%
  \else
  #3%
  \fi
  \tabularnewline
  \hline
}


\makeatother

\begin{document}
\mytableofcontents


\section{\large \textbf{\textsc{Отрасль применения}}}    
\blindtext[10]
\section{\large \textbf{\textsc{Ответственные лица}}}    
\blindtext[10]
\section{\large \textbf{\textsc{Нормативная база}}}    
\blindtext[10]
\section{\large \textbf{\textsc{Материальная база}}}    
\blindtext[10]
\subsection{\large \textbf{\textsc{Основные средства}}}    
\blindtext[10]
\subsection{\large \textbf{\textsc{Химические средства}}}   
\blindtext[10]
\section{\large \textbf{\textsc{Определения и сокращения}}}   
\blindtext[10]
\section{\large \textbf{\textsc{Основная часть}}}   
\blindtext[10]
\section{\large \textbf{\textsc{Конечные выводы / рекомендации}}}      

\end{document}

在此处输入图片描述

答案2

如果我正确理解了您的目的,那么可以通过使用\pageref指令指向出现各种指令的页码来实现\section

在此处输入图片描述

\documentclass{article}       
\usepackage[utf8]{inputenc}   
\usepackage[russian]{babel}   
\usepackage{tabularx}   

% fonts for sectioning headers
\usepackage{sectsty}
\allsectionsfont{\large\bfseries\scshape} 

\begin{document}       
\noindent
\begin{tabularx}{\textwidth}{|l|X|r|}   
\hline    
 Разделы &          & Page \\ \hline   
 Номер   & Название &      \\ \hline   
 1. & Отрасль применения & \pageref{sec:1} \\ \hline   
 2. & Ответственные лица & \pageref{sec:2} \\ \hline   
 3. & Нормативная база   & \pageref{sec:3} \\ \hline   
 4. & Материальная база  & \pageref{sec:4} \\ \hline   
 5. & Определения и сокращения & \pageref{sec:5} \\ \hline  
 6. & Основная часть & \pageref{sec:6} \\ \hline   
 7. & Конечные выводы, рекомендации & \pageref{sec:7} \\ \hline  
\end{tabularx}   

% "\clearpage" instructions used only to make sure that the section-level headers are on distinct pages
\clearpage\section{Отрасль применения} \label{sec:1}
\clearpage\section{Ответственные лица} \label{sec:2}
\clearpage\section{Нормативная база}   \label{sec:3}
\clearpage\section{Материальная база}  \label{sec:4}
   \subsection{Основные средства}   
   \subsection{Химические средства}  
\clearpage\section{Определения и сокращения}\label{sec:5}
\clearpage\section{Основная часть}\label{sec:6}
\clearpage\section{Конечные выводы\slash рекомендации}\label{sec:7}
\end{document}

相关内容