折叠 titlesec 页眉中的节范围

折叠 titlesec 页眉中的节范围

我正在尝试使用字典样式的范围作为页眉titlesec,但如果给定页面上只有一个范围,则在尝试折叠它们时遇到问题。

文档这表明这是可能的,但也非常模糊:

“当然,如果页面中只有一个部分,则应该对这个例子进行微调以折叠范围,但它提示了如何获得令人惊叹的标题。”

给出以下代码,我希望第二页的页眉显示“3”而不是“3-3”。为什么不起作用ifstrequal

\documentclass[]{书}
\usepackage{lipsum}
\usepackage[pagestyles]{titlesec}
\usepackage{etoolbox}

\renewcommand{\thesection}{\arabic{section}}

\newpagestyle{页面样式}{
  \sethead[\ifstrequal{\toptitlemarks\thesection}{\bottitlemarks\thesection}{\toptitlemarks\thesection}{\toptitlemarks\thesection---\bottitlemarks\thesection}]
  []
  []
  {}
  {}
  {\ifstrequal{\toptitlemarks\thesection}{\bottitlemarks\thesection}{\toptitlemarks\thesection}{\toptitlemarks\thesection---\bottitlemarks\thesection}}
  }
\pagestyle{页面样式}

\开始{文档}

\部分{}
\lipsum[1-2]
\部分{}
\lipsum[1]
\部分{}
\lipsum[1-6]
\部分{}
\lipsum[1-2]

\结束{文档}

答案1

这是一个解决方案。titleps 的文档

切换机制的一个缺点是,比较来自顶部标记和底部标记的命令并不是一件容易的事。这个宏只是让它变得更简单。如果你想将当前命令 \thesection与顶部标记中的命令进行比较,请写:

\ifsamemark\toptitlemarks\thesection{<true>}{<false>}
\documentclass[]{book}
\usepackage{lipsum}
\usepackage[pagestyles]{titlesec}
\usepackage{etoolbox}

\renewcommand{\thesection}{\arabic{section}}

\newpagestyle{pagestyle}{
  \sethead[\ifsamemark\toptitlemarks\thesection{\ifsamemark\bottitlemarks\thesection{\toptitlemarks\thesection}{\toptitlemarks\thesection---\bottitlemarks\thesection}}{\toptitlemarks\thesection---\bottitlemarks\thesection}]
  []
  []
  {}
  {}
  {\ifsamemark\bottitlemarks\thesection{\ifsamemark\toptitlemarks\thesection{\toptitlemarks\thesection}{\toptitlemarks\thesection---\bottitlemarks\thesection}}{\toptitlemarks\thesection---\bottitlemarks\thesection}}
  }
\pagestyle{pagestyle}

\begin{document}

\section{}
\lipsum[1-2]
\section{}
\lipsum[1]
\section{}
\lipsum[1-6]
\section{}
\lipsum[1-2]

\end{document}

相关内容