我正在努力完成我的论文,但在标题中遇到了一些文本对齐问题。我使用 fancyhdr 包,我希望章节位于标题的左侧,部分位于标题的右侧。由于我的部分名称较长,我尝试了以下解决方案:
\newcommand{\changefont}{
\fontsize{10}{11}\selectfont
}
\fancyhf[lh,rh,ch]{}
\fancyhf[lh]{\begin{minipage}[t]{\textwidth}\changefont
\slshape\raggedleft\leftmark\qquad\raggedright\rightmark\\\\
\end{minipage}}
该部分的第一行和第二行均未向右对齐。另一个问题是第二行与标题的水平线相冲突。我希望该部分向右对齐,一旦超出页面中心,它就会继续在新行上。
我希望有人有想法甚至解决方案。
谢谢,约翰内斯
答案1
您可以将内容\rightmark
(即章节编号和章节标题)放入宽度为 的小页面中0.5\textwidth
。
为了您的目的而提供的演示:
\documentclass{book}
\usepackage{showframe}
\usepackage{fancyhdr}
\renewcommand{\chaptermark}[1]%
{\markboth{\thechapter.\ #1}{}}
\renewcommand{\sectionmark}[1]%
{\markright{\thesection.\ #1}}
\setlength{\headheight}{20pt}
\fancyhf{}
\fancyhead[L]{\fontsize{8}{9}\selectfont\slshape\leftmark}
\fancyhead[R]{\minipage[b]{.5\textwidth}\fontsize{8}{9}\selectfont\slshape\raggedleft\rightmark\endminipage}
\pagestyle{fancy}
\begin{document}
\chapter{AAAAA}
\section{This section is very very very very very very very very long}
some text
\newpage
some text
\newpage
\section{aaaa}
some text
\end{document}
答案2
这里的想法是调整右侧的宽度\parbox
以适应剩余空间。有趣的是,困难的部分是始终让标题的顶部每次都显示在同一水平。
\documentclass{book}
\usepackage{showframe}
\setlength{\headheight}{20pt}
\makeatletter
\newsavebox{\lefthead}
\def\ps@myheadings{%
\def\@oddfoot{\hfil\thepage\hfil}% assuming you want the page number somewhere
\let\@evenfoot\@oddfoot
\def\@oddhead{\savebox{\lefthead}{\slshape\leftmark}%
\parbox[b][\headheight][t]{\textwidth}{\usebox\lefthead\hfill
\parbox[t]{\dimexpr \textwidth-\wd\lefthead-\columnsep}%
{\raggedleft\slshape\rightmark}\par}}%
\let\@evenhead\@oddhead
\let\@mkboth\markboth
\def\chaptermark##1{%
\markboth {\MakeUppercase{%
\ifnum \c@secnumdepth >\m@ne
\@chapapp\ \thechapter. \ %
\fi
##1}}{}}%
\def\sectionmark##1{%
\markright {\MakeUppercase{%
\ifnum \c@secnumdepth >\z@
\thesection. \ %
\fi
##1}}}}
\makeatother
\pagestyle{myheadings}
\begin{document}
\chapter{AAAAA}
\section{This section is very very very very very very very very long}
some text
\newpage
some text
\newpage
\section{aaaa}
some text
\end{document}