使章节标题不可见?

使章节标题不可见?

这里有一个简单的问题:如何使章节标题不可见,但仍然获得目录和标题中的正确章节列表?例如,在第 10 页,如果我执行\section{New section},我一定看不到文本“X. 新章节”,但我仍然希望该章节位于目录中,并位于\rightmark以下页面中,直到出现新章节为止。

我正在使用一个极简文档(类文章,没有用于调整章节标题样式的包)

答案1

像这样:

\newcommand\invisiblesection[1]{%
  \refstepcounter{section}%
  \addcontentsline{toc}{section}{\protect\numberline{\thesection}#1}%
  \sectionmark{#1}}
...

\invisiblesection{Blah}

答案2

Boris 的解决方案效果很好,但是\nameref部分无法正常工作。这是另一个基于他们的解决方案的解决方案。

\begin{document}

\makeatletter
\def\invisiblesection#1{%
\refstepcounter{section}%
\addcontentsline{toc}{section}{\protect\numberline{\thesection}#1}%
\sectionmark{#1}}
\protected@edef\@currentlabelname{#1} % Set correct name
...}
\makeatother
    
\invisiblesection{Blah} \label{blah}
...
\nameref{blah}

最小工作示例(MWE):

\documentclass[english]{article}
\usepackage[T1]{fontenc}
\usepackage[latin9]{inputenc}
\usepackage{babel}
\usepackage[unicode=true,pdfusetitle,
 bookmarks=true,bookmarksnumbered=true,bookmarksopen=true,bookmarksopenlevel=3,
 breaklinks=false,pdfborder={0 0 1},backref=false,colorlinks=false]
 {hyperref}
\usepackage[demo]{graphicx}


\newcommand\invisiblesectionwithoutname[1]{%
  \refstepcounter{section}%
  \addcontentsline{toc}{section}{\protect\numberline{\thesection}#1}%
  \sectionmark{#1}\phantom{}
  }

\makeatletter
\def\invisiblesection#1{%
\refstepcounter{section}%
  \addcontentsline{toc}{section}{\protect\numberline{\thesection}#1}%
  \sectionmark{#1}\phantom{}
  \protected@edef\@currentlabelname{#1} % Set correct name
}
\makeatother

\begin{document}
\tableofcontents{}\clearpage{}

\invisiblesectionwithoutname{One} \label{one}
\begin{figure}
\caption{\protect\includegraphics{logo}}
\end{figure}


\clearpage{}
\invisiblesection{Two} \label{two}
\begin{figure}
\caption{\protect\includegraphics{logo}}
\end{figure}

\\
Without setting correct label: \nameref{one}

With setting correct label: \nameref{two}
\end{document} 

输出 (\nameref):

相关内容