在文章類中產生 \tableofcontents 而不使用標準 \section s

在文章類中產生 \tableofcontents 而不使用標準 \section s

有沒有辦法\tableofcontents在文章類別中產生 a 而不使用標準\sections,但\section使用了不同的「 」編號方案?具體來說,請參閱大衛卡萊爾的回答的第二部分建立包含多個小節的文件的最佳方法是什麼?。標準\tableofcontents似乎不起作用。我是 LaTeX 的新手,但我很驚訝它看起來\label並且\ref運作得很好。

編輯:我希望能夠建立一個目錄,其中包含例如第一級或第一級和第二級標題(例如 \setcounter{tocdepth}{2} 的工作原理)。下面是上面引用的程式碼:

\documentclass{article}

\newcounter{depth}
\setcounter{depth}{1}
\newcounter{pi}
\newcounter{pii} [pi]  \renewcommand\thepii{\thepi.\arabic{pii}}
\newcounter{piii}[pii] \renewcommand\thepiii{\thepii.\arabic{piii}}
\newcounter{piv} [piii]\renewcommand\thepiv{\thepiii.\arabic{piv}}
\newcounter{pv}  [piv] \renewcommand\thepv{\thepiv.\arabic{pv}}


\def\psetdepth#1#2\relax{%
\ifx+#1\relax\addtocounter{depth}{#2}%
\else\ifx-#1\relax\addtocounter{depth}{-#2}%
\else\setcounter{depth}{#1#2}\fi\fi}

\newcommand\sentence[2][+0]{%
  \par
  \psetdepth#1\relax\relax
  \vspace{\csname pspace\roman{depth}\endcsname}%
  \hspace{\csname phspace\roman{depth}\endcsname}%
  \hangindent=\csname pindent\roman{depth}\endcsname
  \hangafter=1
  \indent\refstepcounter{p\roman{depth}}\llap{\csname thep\roman{depth}\endcsname\ }%
  {\csname pstyle\roman{depth}\endcsname#2\par}}

\newcommand\phspacei{20pt}
\newcommand\phspaceii{40pt}
\newcommand\phspaceiii{65pt}
\newcommand\phspaceiv{100pt}
\newcommand\phspacev{140pt}

\newcommand\pindenti{5ex}
\newcommand\pindentii{10ex}
\newcommand\pindentiii{15ex}
\newcommand\pindentiv{23.5ex}
\newcommand\pindentv{32.5ex}

\newcommand\pspacei{15pt}
\newcommand\pspaceii{15pt}
\newcommand\pspaceiii{10pt}
\newcommand\pspaceiv{10pt}
\newcommand\pspacev{10pt}

\newcommand\pstylei{\Large\bfseries}
\newcommand\pstyleii{\bfseries\itshape}
\newcommand\pstyleiii{\normalfont}
\newcommand\pstyleiv{\normalfont}
\newcommand\pstylev{\normalfont}

\begin{document}

\raggedright

\sentence{This is a sentence.}

\sentence{This is another sentence. Just like any other sentence one would think but perhaps not.}


\sentence[+1]{This sentence is similar to the others, but longer. This sentence is similar to the others, but longer.This sentence is similar to the others, but longer.}


\sentence{This is a sentence.This sentence is similar to the others, but longer.This sentence is similar to the others, but longer.This sentence is similar to the others, but longer.}


\sentence[+1]{This is another sentence.This sentence is similar to the others, but longer.This sentence is similar to the others, but longer.This sentence is similar to the others, but longer.}


\sentence[+1]{This sentence is similar to the others, but longer.This sentence is similar to the others, but longer.This sentence is similar to the others, but longer.This sentence is similar to the others, but longer.}


\sentence{This is a sentence.This sentence is similar to the others, but longer.This sentence is similar to the others, but longer.This sentence is similar to the others, but longer.}

\sentence{This is another sentence.This sentence is similar to the others, but longer.This sentence is similar to the others, but longer.This sentence is similar to the others, but longer.}

\sentence{This sentence is similar to the others, but longer.}

\sentence[+1]{Hey there how is it going my good friend. Hey there how is it going my good friend.}

\sentence[-2]{This is a sentence hey.}

\sentence{This is another sentence.}

\sentence{This sentence is similar to the others, but longer.}

\sentence[-1]{This is a sentence.}

\end{document}

答案1

可以透過目錄層級到計數器值的映射來ToC產生。\addcontentslinedepth

程式碼

\ifcase\c@depth
 \or
  \def\tocstyle{section}
  \or 
  \def\tocstyle{subsection}
  \or
  \def\tocstyle{subsubsection}
  \or
  \def\tocstyle{paragraph}
  \or
  \def\tocstyle{subparagraph}
\fi

\tocstyle根據 的值depth、其中的1意義section等定義巨集。

該行\addcontentsline{toc}{\toclevel}{\protect\numberline{}#2}將該行新增至目錄並產生hyperlinks(如果使用時需要)hyperref

設定tocdepth為 的值2將僅允許前兩個級別,就像正常的切片級別一樣。

\documentclass{article}

\newcounter{depth}
\setcounter{depth}{1}
\newcounter{pi}
\newcounter{pii} [pi]  \renewcommand\thepii{\thepi.\arabic{pii}}
\newcounter{piii}[pii] \renewcommand\thepiii{\thepii.\arabic{piii}}
\newcounter{piv} [piii]\renewcommand\thepiv{\thepiii.\arabic{piv}}
\newcounter{pv}  [piv] \renewcommand\thepv{\thepiv.\arabic{pv}}


\def\psetdepth#1#2\relax{%
\ifx+#1\relax\addtocounter{depth}{#2}%
\else\ifx-#1\relax\addtocounter{depth}{-#2}%
\else\setcounter{depth}{#1#2}\fi\fi}

\setcounter{tocdepth}{2}

\makeatletter
\newcommand\sentence[2][+0]{%
  \par
  \psetdepth#1\relax\relax
  \vspace{\csname pspace\roman{depth}\endcsname}%
  \hspace{\csname phspace\roman{depth}\endcsname}%
  \hangindent=\csname pindent\roman{depth}\endcsname
  \hangafter=1
  \indent\refstepcounter{p\roman{depth}}\llap{\csname thep\roman{depth}\endcsname\ }%
  \ifcase\c@depth
  \or
  \def\tocstyle{section}
  \or 
  \def\tocstyle{subsection}
  \or
  \def\tocstyle{subsubsection}
  \or
  \def\tocstyle{paragraph}
  \or
  \def\tocstyle{subparagraph}
  \fi
  {\csname pstyle\roman{depth}\endcsname#2\addcontentsline{toc}{\tocstyle}{\protect\numberline{\csname thep\roman{depth}\endcsname}#2}\par}} 
\makeatother

\newcommand\phspacei{20pt}
\newcommand\phspaceii{40pt}
\newcommand\phspaceiii{65pt}
\newcommand\phspaceiv{100pt}
\newcommand\phspacev{140pt}

\newcommand\pindenti{5ex}
\newcommand\pindentii{10ex}
\newcommand\pindentiii{15ex}
\newcommand\pindentiv{23.5ex}
\newcommand\pindentv{32.5ex}

\newcommand\pspacei{15pt}
\newcommand\pspaceii{15pt}
\newcommand\pspaceiii{10pt}
\newcommand\pspaceiv{10pt}
\newcommand\pspacev{10pt}

\newcommand\pstylei{\Large\bfseries}
\newcommand\pstyleii{\bfseries\itshape}
\newcommand\pstyleiii{\normalfont}
\newcommand\pstyleiv{\normalfont}
\newcommand\pstylev{\normalfont}

\begin{document}
\tableofcontents
\raggedright

\sentence{This is a sentence.}

\sentence{This is another sentence. Just like any other sentence one would think but perhaps not.}


\sentence[+1]{This sentence is similar to the others, but longer. This sentence is similar to the others, but longer.This sentence is similar to the others, but longer.}


\sentence{This is a sentence.This sentence is similar to the others, but longer.This sentence is similar to the others, but longer.This sentence is similar to the others, but longer.}


\sentence[+1]{This is another sentence.This sentence is similar to the others, but longer.This sentence is similar to the others, but longer.This sentence is similar to the others, but longer.}


\sentence[+1]{This sentence is similar to the others, but longer.This sentence is similar to the others, but longer.This sentence is similar to the others, but longer.This sentence is similar to the others, but longer.}


\sentence{This is a sentence.This sentence is similar to the others, but longer.This sentence is similar to the others, but longer.This sentence is similar to the others, but longer.}

\sentence{This is another sentence.This sentence is similar to the others, but longer.This sentence is similar to the others, but longer.This sentence is similar to the others, but longer.}

\sentence{This sentence is similar to the others, but longer.}

\sentence[+1]{Hey there how is it going my good friend. Hey there how is it going my good friend.}

\sentence[-2]{This is a sentence hey.}

\sentence{This is another sentence.}

\sentence{This sentence is similar to the others, but longer.}

\sentence[-1]{This is a sentence.}

\end{document}

在此輸入影像描述

相關內容