我希望目录显示主要内容的章节和子章节,但只显示附录的章节。我可以用以下方法实现
\setcounter{tocdepth}{2}
然后使用针对附录中的小节的特定新命令:
\newcommand{\appendixsubsection}[1]{
\stepcounter{subsection}
\subsection*{\Alph{section}.\arabic{subsection}\hspace{1em}{#1}}
}
基于这个帖子。这给出了所需的目录,但当我想引用隐藏的附录子节时,显示的是节号,而不是子节号。以下示例可能更清楚地说明我的意思。
\documentclass[a4paper]{article}
\usepackage{appendix}
\newcommand{\appendixsubsection}[1]{
\stepcounter{subsection}
\subsection*{\Alph{section}.\arabic{subsection}\hspace{1em}{#1}}
}
\begin{document}
\setcounter{tocdepth}{2}
\tableofcontents
\section{First section}
This is a reference to the appendix section: \ref{appendix_section}.
\subsection{First subsection}
This subsection should be shown in the table of contents.
This is a reference to the first appendix subsection: \ref{appendix_subsection}.
This reference should be A.1.
\subsubsection{First subsubsection}
This is a refereece to the appendix subsubsection: \ref{appendix_subsubsection}
\appendix
\appendixpage
\addappheadtotoc
\section{Appendix section}
\label{appendix_section}
This is the appendix section
\appendixsubsection{Appendix subsection}
\label{appendix_subsection}
This is the appendix subsection, it should not be shown in the table of contents.
\subsubsection{Appendix subsubsection}
\label{appendix_subsubsection}
This is the appendix subsubsection
\end{document}
我发现多个问题询问如何隐藏目录中的子部分,但我找不到引用的解决方案。
先感谢您。
答案1
\contentsline
tocdepth实际上由 使用\@dottedtocline
,这意味着它可以在 TOC 中途使用 进行更改\addtocontents
。
\documentclass[a4paper]{article}
\usepackage{appendix}
\begin{document}
\setcounter{tocdepth}{2}
\tableofcontents
\section{First section}
This is a reference to the appendix section: \ref{appendix_section}.
\subsection{First subsection}
This subsection should be shown in the table of contents.
This is a reference to the first appendix subsection: \ref{appendix_subsection}.
This reference should be A.1.
\subsubsection{First subsubsection}
This is a refereece to the appendix subsubsection: \ref{appendix_subsubsection}
\appendix
\appendixpage
\addappheadtotoc
\addtocontents{toc}{\protect\setcounter{tocdepth}{1}}% This turns off subsections
\section{Appendix section}
\label{appendix_section}
This is the appendix section
\subsection{Appendix subsection}
\label{appendix_subsection}
This is the appendix subsection, it should not be shown in the table of contents.
\subsubsection{Appendix subsubsection}
\label{appendix_subsubsection}
This is the appendix subsubsection
\end{document}
答案2
一种解决方案是创建一个自定义引用命令\appref
来引用这些小节,使用\hyperref[sec:appendixsubsection]{\Alph{section}.\arabic{subsection}}
。请注意,您必须\usepackage{hyperref}
将此命令添加到您的序言中。
实现可能如下所示:
% Add to preamble
\usepackage{hyperref}
\newcommand{\appendixsubsection}[1]{
\stepcounter{subsection}
\subsection*{\Alph{section}.\arabic{subsection}\hspace{1em}{#1}}
}
\newcommand{\appref}[1]{
\hyperref[#1]{\Alph{section}.\arabic{subsection}}
}
然后用来\appref{appendix_subsection}
引用该小节。
编辑:
这可能是一个更好的解决方案:只需在命令定义中使用\refstepcounter{subsection}
而不是,因为这样就会识别出已添加的子部分。像这样:\stepcounter{subsection}
\ref
\newcommand{\appendixsubsection}[1]{
\refstepcounter{subsection}
\subsection*{\Alph{section}.\arabic{subsection}\hspace{1em}{#1}}
}
只需将这 3 个字母添加到您上面发布的示例中即可。