我有一个使用 准备的标题fancyhdr
。我希望左标题的第一行与左标题的第二行右对齐。在下面的 MWE 中,我希望“我的城市”与“某大学”右对齐(这样“城市”就在“某处”上方)。我该如何实现?
\documentclass{article}
\usepackage{fancyhdr}
\usepackage{fancyheadings}
\pagestyle{fancy}
\rhead{\textsc{Tutorial\\The periodic table}}
\lhead{\textsc{My city\\University of somewhere}}
\cfoot{\thepage}
\begin{document}
hello
\end{document}
答案1
您可以将最宽元素的内容装箱并使用它来调整较短元素的宽度:
\documentclass{article}
\usepackage{fancyhdr}% http://ctan.org/pkg/fancyhdr
\newsavebox{\myheadbox}% Heading storage box
\pagestyle{fancy}
\rhead{\textsc{Tutorial\\The periodic table}}
\lhead{\textsc{\savebox{\myheadbox}{University of somewhere}\makebox[\wd\myheadbox][r]{My city}\\\usebox{\myheadbox}}}
\cfoot{\thepage}
\begin{document}
hello
\end{document}
\myheadbox
包含“某地大学”(采用适当的字体,\scshape
)。然后,“我的城市”以的宽度(宽度)r
右对齐。\makebox
\wd\myheadbox
\myheadbox
答案2
不要加载fancyheadings
,这是的过时版本fancyhdr
。
最简单的方法是使用tabular
负责对齐的方法:
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{} % clear all fields
\fancyhead[R]{%
\scshape
\begin{tabular}[t]{@{}r@{}}
Tutorial\\The periodic table
\end{tabular}}
\fancyhead[L]{%
\scshape
\begin{tabular}[t]{@{}r@{}}
My city\\University of somewhere
\end{tabular}}
\fancyfoot[C]{\thepage}
将 设置为.log 文件中显示的\headheight
值。对于 10pt 文档,它要求执行fancyhdr
\setlength{\headheight}{24pt}
答案3
\raggedleft
您可以在 内排版左侧标题minipage
,其宽度为最宽元素(借助 计算\widthof
,由calc
包裹)。
\documentclass{article}
\usepackage{fancyhdr}
\usepackage{calc}
\pagestyle{fancy}
\rhead{\textsc{Tutorial\\The periodic table}}
\lhead{%
\begin{minipage}[b]{\widthof{\textsc{University of somewhere}}}
\raggedleft
\textsc{My city\\University of somewhere}%
\end{minipage}
}
\cfoot{\thepage}
\begin{document}
hello
\end{document}
编辑:正如 egreg 在聊天中指出的那样,可以minipage
用varwidth
环境替换“其最终宽度是其内容的自然宽度”(包装手册)。
\documentclass{article}
\usepackage{fancyhdr}
\usepackage{varwidth}
\pagestyle{fancy}
\rhead{\textsc{Tutorial\\The periodic table}}
\lhead{%
\begin{varwidth}[b]{10cm}
\raggedleft
\textsc{My city\\University of somewhere}%
\end{varwidth}
}
\cfoot{\thepage}
\begin{document}
hello
\end{document}
两个示例的输出: