隐藏目录中的附录小节,同时保留参考资料

隐藏目录中的附录小节,同时保留参考资料

我希望目录显示主要内容的章节和子章节,但只显示附录的章节。我可以用以下方法实现

\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

\contentslinetocdepth实际上由 使用\@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 个字母添加到您上面发布的示例中即可。

相关内容