我有一个文档,我想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}