我正在解决以下冲突: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
@
\tableofcontents
article
CONTENTS
因此这将起作用:
前\begin{document}
:
\makeatletter
\newcommand\setshortheader{\markboth{\textit{\s@title}}{\textit{\s@title}}}
\makeatother
在文档正文中:
\setshortheader
\tableofcontents
\setshortheader