有没有方法可以删除 \\ 换行符 - fancyhdr 和多行章节名称的问题

有没有方法可以删除 \\ 换行符 - fancyhdr 和多行章节名称的问题

我的一些章节名称很长,并且它们在目录和章节页面上有不同的换行符,根据解决方案如何在章节标题(在目录、章节、页眉中)进行(强制)换行 - 如果可能的话?

问题是,当我有这样的“多行”章节名称时,它会被破坏fancyhdr

(澄清:新行有问题fancydhr。在目录和章节名称中,它们是故意的,必须保留)

有没有删除换行符的方法\\,例如\MakeUppercase将字母变为大写?

\documentclass[pdftex,a4paper,12pt,twoside,openany]{report}
\usepackage{lipsum}
\usepackage{fancyhdr}
\setlength{\headheight}{15pt}
\setlength{\headsep}{8pt}
\pagestyle{fancy}
\renewcommand{\chaptermark}[1]{\markboth{\thechapter.\ #1}{}}
\renewcommand{\sectionmark}[1]{\markright{\thesection.\ #1}}
\renewcommand{\headrulewidth}{0.5pt}
\renewcommand{\footrulewidth}{0pt}
\fancyhf{}
\fancyhead[RO]{\rightmark}
\fancyhead[LE]{\leftmark}
\fancyfoot[C]{\thepage}
\begin{document}
\tableofcontents
\newcommand{\term}{\textit}
%\cleardoublepage \phantomsection
\chapter
[FIRST LONG LINE\\SECOND \textit{LONG} LINE\\THIRD LONG LINE\\FOURTH LONG LINE]
{FIRST LONG LINE\\SECOND \textit{LONG} LINE\\THIRD LONG LINE\\FOURTH LONG LINE}
\lipsum[1-60]
\end{document}

我正在寻找一种\MakeNoNewlines可以以类似方式使用\MakeUppercase:的宏:

\renewcommand{\chaptermark}[1]{\markboth{\thechapter.\ \MakeNoNewlines{#1}}{}}
\renewcommand{\sectionmark}[1]{\markright{\thesection.\ \MakeNoNewlines{#1}}}

答案1

您的\MakeNoNewlines命令可以按如下方式定义。我们可以局部重新定义\\以仅插入<space>。但它对目录没有帮助。

\documentclass[a4paper,12pt,twoside,openany]{report}
\usepackage{lipsum}
\usepackage{fancyhdr}
\setlength{\headheight}{15pt}
\setlength{\headsep}{8pt}
\pagestyle{fancy}
\renewcommand{\chaptermark}[1]{\markboth{\thechapter.\ \MakeNoNewlines{#1}}{}}
\renewcommand{\sectionmark}[1]{\markright{\thesection.\ \MakeNoNewlines{#1}}}

\def\MakeNoNewlines#1{\begingroup\def\\{ }#1\endgroup} % <-- here

\renewcommand{\headrulewidth}{0.5pt}
\renewcommand{\footrulewidth}{0pt}
\fancyhf{}
\fancyhead[RO]{\rightmark}
\fancyhead[LE]{\leftmark}
\fancyfoot[C]{\thepage}
\begin{document}
\tableofcontents
\newcommand{\term}{\textit}
%\cleardoublepage \phantomsection
\chapter
[FIRST LONG LINE\\SECOND LONG LINE\\THIRD LONG LINE\\FOURTH LONG LINE]
{FIRST LONG LINE\\SECOND LONG LINE\\THIRD LONG LINE\\FOURTH LONG LINE}
\lipsum[1-60]
\end{document}

相关内容