titlesec/titleps 和內部使用 \markbo 的套件之間的交互不良

titlesec/titleps 和內部使用 \markbo 的套件之間的交互不良

以下 MWE 示範了endfloat和之間的不良互動titleps。第二頁的頁首和頁尾中的“圖形”一詞全部大寫,這與頁面樣式規範相反。

\documentclass[12pt]{article}
\usepackage[heads,nolists]{endfloat}
\usepackage[pagestyles]{titlesec}
\newpagestyle{main}{
  \sethead{}{}{\thepage}
  \setfoot{}{}{}
}
\begin{document}
\pagestyle{main}
\section{Foo}
\section*{Bar}
\begin{figure}
  Blurf
\end{figure}
\end{document}

biblatex也會受到影響:在這種情況下,REFERENCES 會出現在頁尾和頁首。

\begin{filecontents*}{\jobname.bib}
@book{Saussure1995,
    Title = {Cours de Linguistique Générale},
    Publisher = {Payot},
    Year = {1995},
    Author = {Ferdinand de Saussure},
}
\end{filecontents*}
\documentclass{article}
\usepackage{kantlipsum}
\usepackage[style=authoryear]{biblatex}
\addbibresource{\jobname.bib}
\usepackage{titleps}
\newpagestyle{main}{
\setfoot{My footer}{}{\thepage}
}
\pagestyle{main}
\begin{document}
\cite{Saussure1995}
\kant[1-2]
\printbibliography
\end{document}

我已經追蹤到了這一點endfloatbiblatex在內部使用了\mark命令。具體來說,如果我重新定義\markboth為不執行任何操作(仍然消耗兩個參數),問題就會消失。不過,我覺得這樣做不太安全。至少我想知道是否還有其他東西需要同樣的處理,以及什麼可能會損壞。

titleps 文件警告說“使用\markboth可能會導致不可預測的結果”,但當它是軟體包認為可以使用的記錄介面時,這是一個令人失望的逃避。

建議?

答案1

將以下行加入序言中。

\makeatletter
\let\ttl@titlemarks\relax
\makeatother

然後這兩個例子就可以工作了。這也有助於自訂索引中 titleps 的標頭以包含目前索引條目

答案2

不是答案,但評論太長。

是否以及如何\markboth處理命令是問題的一部分。但在範例中,頁面樣式與頁碼分開為空,因此不應顯示標記指令的內容。這顯然是一個錯誤,應該向 titleps 的作者報告。演示該問題的一個簡單範例是:

\documentclass[12pt]{article}
\usepackage{titleps}
\newpagestyle{main}{
  \sethead{}{}{}
  \setfoot{}{}{}
}

\begin{document}
\pagestyle{main}
\mark{abc}
blub
\end{document}

它在頁眉和頁腳中列印“bc”。

相關內容