如果目录跨越多页,则 \tableofcontents 将覆盖文档类标题

如果目录跨越多页,则 \tableofcontents 将覆盖文档类标题

我正在解决以下冲突:Springer Nature sn-jnl 文献类别和标准\tableofcontents命令:如果目录 (TOC) 完全包含在单个页面中(并且不放在第一页),则我的问题的完整解决方案是对类似问题的可接受答案。 然而,如果目录跨越两页,则此方法只能解决偶数页或奇数页的问题,但不能同时解决两者的问题。(如果目录跨越两页以上,它根本无法解决问题)

期望的行为:

sn-jnl 类定义一个命令\title[optional short title]{article title}。如果指定了“短标题”,文档类应在偶数页上生成左对齐的页眉,其中包含页码和指定的“短标题”。如果没有提供“短标题”,它应该以相同的方式运行,但打印完整的“文章标题”而不是“短标题”。

偶数页页眉

在奇数页上,它应该类似地打印一个右对齐的页眉,其中包含页码和“简称”(或“全标题”):

奇数页页眉

问题描述:

如果使用 插入目录\tableofcontents,则页眉中的标题将在偶数页和奇数页眉中被“内容”替换:

标题中显示的内容

如果目录仅跨越一页,则可以通过替换以下内容来恢复所需的标题行为\tableofcontents

\markboth{\leftmark}{\rightmark}
\tableofcontents
\markboth{\leftmark}{\rightmark}

查看接受的答案类似的问题。然而,如果目录跨越两页,则此方法仅将标题恢复到偶数页(如果目录从偶数页开始)或奇数页(如果目录从奇数页开始)。因此,任何页面的平价与目录开始的页面不同,其标题中仍会显示“内容”。

梅威瑟:

\documentclass[pdflatex,sn-mathphys]{sn-jnl}
\usepackage{lipsum}
\begin{document}

\title[short title]{Full Title}
\author*[1]{Corresponding Author}
\affil[1]{Institution}
\abstract{\lipsum[4]}
 
\maketitle    
\newpage
    
\markboth{\leftmark}{\rightmark}
\tableofcontents
\markboth{\leftmark}{\rightmark}

\section{Section}
\section{Section}
\section{Section}
\section{Section}
\section{Section}
\section{Section}
\section{Section}
\section{Section}
\section{Section}
\section{Section}
\section{Section}
\section{Section}
\section{Section}
\section{Section}
\section{Section}
\section{Section}
\section{Section}
\section{Section}
\section{Section}
\section{Section}
\section{Section}
\section{Section}
\section{Section}
\section{Section}
\section{Section}
\section{Section}
\section{Section}
\section{Section}
\section{Section}
\section{Section}
\section{Section}
\section{Section}
\section{Section}
\section{Section}
\section{Section}
\section{Section}

\backmatter
\bmhead{Backmatter}

\begin{appendices}
\section{Appendix}
\end{appendices}

\end{document}

答案1

\leftmark\rightmark不适用于\markboth。它们适用于页眉和页脚,如果在其他地方使用,如果它们能产生预期的效果,那只能说是运气好而已。但在这里却不能。

文档sn-jnl类使用包含短标题的\markboth{\textit{\s@title}}{\textit{\s@title}}}位置。(这些定义应在和\s@title之间使用,以接受宏名称。因此,将其放在宏中很方便。)的定义是从类继承的,因此它放在标题中。\makeatletter\makeatother@\tableofcontentsarticleCONTENTS

因此这将起作用:

\begin{document}

\makeatletter
\newcommand\setshortheader{\markboth{\textit{\s@title}}{\textit{\s@title}}}
\makeatother

在文档正文中:

\setshortheader
\tableofcontents
\setshortheader

相关内容