我遇到的问题是,有时章节或节标题太长,无法放入页眉空间并与其他内容重叠。有没有办法自动用“…”或其他合适的内容替换多余的文本?
这是 MWE
% !Mode:: "TeX:UTF-8"
\documentclass[UTF8, english]{book}
\usepackage{babel}
\usepackage{blindtext}
\usepackage{lipsum}
\usepackage{fancyhdr}
\fancyhf{}
\fancyhead[LE, RO]{\scriptsize \slshape \rightmark} %% Section number and title.
\fancyhead[RE, LO]{\scriptsize \slshape \leftmark} %% Chapter number and title.
\fancyfoot[R]{\scriptsize \thepage} %% Page number.
\begin{document}
\pagestyle{fancy}
\chapter{Asymptotic Behaviour of Supersymmetric Yang Mills Theories in The Two Loop Approximation}
\blindtext
\section{Calculation of $\beta \left( g \right)$}
\lipsum
\end{document}
先感谢您!
答案1
我不知道什么是合适的简短标题,但有些像这样的可以解决问题:
\chapter[Yang Mills Theories]
{Asymptotic Behaviour of Supersymmetric
Yang Mills Theories in The Two
Loop Approximation}
所有分段命令(\chapter
、\section
等)都有这个可选参数,用于标题和目录。
编辑:自动截断某些长度的标题对于短标题来说通常不是一个好主意,因为这通常会留下一个毫无意义的字符串。如果章节标题的关键词不是“渐近行为”而是“循环近似”怎么办?如果截断留下一个不完整的单词“超级的渐近行为”怎么办……什么“超级”,也许是超人?你真的想要一个带有截断标题的目录吗?
但是,如果这对你来说不是问题的话,这是一个自动解决方案,使用xtring
:
\documentclass{book}
\usepackage{xstring}
\usepackage{lipsum}
\usepackage{fancyhdr}
\fancyhf{}
\fancyhead[LE, RO]{\scriptsize \slshape \rightmark}
\fancyhead[RE, LO]{\scriptsize \slshape \leftmark}
\fancyfoot[R]{\scriptsize \thepage}
\def\mychapter#1{\StrLeft{#1}{20}[\Result]\chapter[\Result\ldots]{#1}}
\begin{document}
\pagestyle{fancy}
\mychapter{Asymptotic Behaviour of Supersymmetric Yang Mills
Theories in The Two Loop Approximation}
\lipsum[2]
\section{Calculation of $\beta \left( g \right)$}
\lipsum[3-12]
\end{document}
答案2
我发现了一个包裹truncate
就是这样!下面是方法
% !TEX encoding = UTF-8 Unicode
\documentclass[UTF8, english]{book}
\usepackage{babel}
\usepackage{blindtext}
\usepackage{lipsum}
\usepackage[fit, breakall]{truncate}
\usepackage{fancyhdr}
\fancyhf{}
\fancyhead[LE, RO]{\tiny \truncate{0.47 \textwidth} \leftmark}
\fancyhead[RE, LO]{\tiny \truncate{0.47 \textwidth} \rightmark}
\begin{document}
\pagestyle{fancy}
\chapter{Asymptotic Behaviour of Supersymmetric Yang Mills Theories in The Two Loop Approximation}
\blindtext
\section{Calculation of $\beta \left( g \right)$ and a lot more text over here which to too long to show}
\lipsum
\blindtext
\end{document}
还有两个细节需要注意。
- 软件包
truncate
必须包含选项breakall
,允许在任意字符处截断。如果不包含,则截断只会发生在单词末尾或连字符处,这可能会影响标题的定位。 - 包
truncate
中必须包含选项fit
,它可以在自然位置打印输出。
输出如下
答案3
如果要为页眉定义一个较短的标题,但保持章节标题和目录中的条目不变,则可以使用包中的\chaptermark
、\sectionmark
等命令fancyhdr
:
\chapter[Title in TOC]{%
Title at the beginning of the chapter\chaptermark{Title for header}%
}
\chaptermark{Title for header}
请注意,我们\chaptermark
在这里使用了两次。这个尴尬的解决方案在文档中有详细解释fancyhdr
,并避免了一些极端情况的问题。