Titlesec:\ifthesection 命令与 biblatex refsegment 存在问题

Titlesec:\ifthesection 命令与 biblatex refsegment 存在问题

我用它titlesec来设置页面样式并biblatex打印按章节细分的累积参考书目。该命令似乎存在一些问题,\ifthesection因为在以下 MWE 中,参考书目奇数页的标题应该显示,例如“参考文献第 1 章”,但我得到的却是“参考书目”。

\documentclass{book}

\usepackage[pagestyles]{titlesec}  
\newpagestyle{main}[\scshape]{%
  \headrule
  \sethead
  [\thepage][][\chaptertitlename\space\thechapter. \chaptertitle]
  {\ifthesection{\thesection\space\,\sectiontitle}
  {\chaptertitlename\space\thechapter. \chaptertitle}}{}{\thepage}
}
\newpagestyle{special}[\scshape]{%
  \headrule
  \sethead
  [\thepage][][\chaptertitle]
  {\ifthesection{\sectiontitle}{\chaptertitle}}{}{\thepage}
}

\usepackage{etoolbox}
\appto{\mainmatter}{\pagestyle{main}}
\appto{\backmatter}{\pagestyle{special}}

\usepackage[refsegment=chapter,backend=bibtex]{biblatex}
\defbibheading{bibbook}[\bibname]{\chapter{#1}}
\defbibheading{subbib}[\refname\space\chaptername\space
  \ref*{refsegment:\therefsection\therefsegment}]{%
  \setcounter{secnumdepth}{0}%
  \section{#1}}
\addbibresource{biblatex-examples.bib}

\usepackage{lipsum}
\usepackage{hyperref}

\begin{document}

\mainmatter
\chapter{Foo}
\lipsum
\section{Baz} 
\lipsum
\nocite{*}
\chapter{Bar}
\nocite{*}

\backmatter
\printbibheading[heading=bibbook]
\bibbysegment[heading=subbib]

\end{document}

一种解决方法是定义一个不使用该\ifthesection命令的新页面样式,并在序言中执行以下操作:

\newpagestyle{bibatend}[\scshape]{%
  \headrule
  \sethead
  [\thepage][][\chaptertitle]
  {\sectiontitle}{}{\thepage}
}
\appto{\backmatter}{\pagestyle{bibatend}}

但是我想special在后记中使用页面样式(因为我还有一个没有章节的索引,因此标题应该始终是章节标题)。所以我的问题是:为什么命令不能\ifthesection正常工作?

答案1

titlesec软件包与任何biblatex refsegmentrefsection选项设置都不兼容。biblatex修补低级章节/章节命令。titlesec忽略所有这些更改,因为它重新定义了用户级章节/章节命令。

要解决此问题,您应该省略该refsegment=chapter设置并使用以下命令手动创建参考段:

\chapter{<title>}
\begin{refsegment}
...
\end{refsegment}

相关内容