我正在尝试创建一个标题,fancyhdr
其中使用rhead
和lhead
部分是两个具有相同和已知大小的图像。
在中心,我想放一些文字(可能是文档的标题),但是当文字太长时,它不适合放在页眉中:
我怎样才能强制断开该线并使其适合颜色框?我应该使用其他方法吗?
以下是我迄今为止尝试过的:
\documentclass[a4paper,10pt,onecolumn]{article}
% Packages needed
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern} % Latin Modern fonts
\usepackage[english]{babel}
\usepackage{graphicx}
\usepackage{geometry}
\usepackage{lipsum}
\usepackage{xcolor}
\graphicspath{{./images/}}
\definecolor{ctagblue}{HTML}{003366}
\usepackage{fancyhdr}
\pagestyle{fancy}
\setlength{\headheight}{3cm}
\renewcommand{\headrulewidth}{0pt}
\lhead{\includegraphics[width=2cm]{Wikimedia-logo}}
\chead{\parbox[b][21mm][c]{10cm}{\colorbox{ctagblue}{\makebox[10cm][c]{\vrule height 1cm depth 1cm width 0pt \textcolor{white}{\bfseries loasdf sdofkjaosdjgas jkgaslk gjlsjasdlgk jasg alksdfj sdklfj alkdfj laskdfjasdf}}}}}
\rhead{\includegraphics[width=2cm]{Wikimedia-logo}}
\begin{document}
\chapter{Test}
\lipsum
\end{document}
徽标图片取自维基百科。
编辑1
我想保持框具有固定尺寸,如图所示,因此即使文本有一行或多行,高度也应该是恒定的。
编辑2
即使文本很长,是否可以将其放入框中?这意味着自动缩放字体。
答案1
这是一个解决方案,使用 的自然高度\parbox
,不\makebox
使用 in \chead
(和更简单的代码!)。我还建议标题中的文本采用无衬线字体,以匹配徽标的样式(当然,这可能取决于实际徽标)。对于标题来说,徽标相当大,我建议让它部分流入边距:
\documentclass[a4paper,10pt]{article}
% Packages needed
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern} % Latin Modern fonts
\usepackage[english]{babel}
\usepackage{graphicx}
\usepackage{geometry}
\usepackage{lipsum}
\usepackage{xcolor}
\graphicspath{{./images/}}
\definecolor{ctagblue}{HTML}{003366}
\usepackage{fancyhdr}
\pagestyle{fancy}
\setlength{\headheight}{3cm}
\renewcommand{\headrulewidth}{0pt}
\lhead{\raisebox{-0.3\height}{\makebox[0pt]{\includegraphics[width=2cm]{Wikimedia-logo}}}}%
\chead{ \colorbox{ctagblue}{\parbox[b][][c]{10cm}{\textcolor{white}{\sffamily\bfseries loasdf sdofkjaosdjgas jkgaslk gjlsjasdlgk jasg alksdfj sdklfj alkdfj laskdfjasdf}}}}
\rhead{\raisebox{-0.3\height}{\makebox[0pt]{\includegraphics[width=2cm]{Wikimedia-logo}}}}
\begin{document}
\chapter{Test}
\lipsum
\end{document}
如果您希望徽标和标题的中心部分具有相同的高度,请用这个代码替换标题的代码(对于 2 厘米的实际高度,我需要 1.8 厘米的 parbox - 我不知道为什么):
\lhead{\raisebox{-1mm}{\makebox[0pt]{\includegraphics[height=2cm]{Wikimedia-logo}}}}%
\chead{\setlength\fboxsep{0pt} \colorbox{ctagblue}{\parbox[b][1.8cm][c]{10cm}{\centering\color{white}\sffamily\bfseries loasdf sdofkjaosdjgas jkgaslk gjlsjasdlgk jasg alksdfj sdklfj alkdfj laskdfjasdf}}}
\rhead{\raisebox{-1mm}{\makebox[0pt]{\includegraphics[height=2cm]{Wikimedia-logo}}}}
答案2
另一个解决方案是使用包tcolorbox
,它将允许任何文本正确适合框(无论其长度如何):
% [...]
\usepackage[many]{tcolorbox}
% [...]
\chead{\parbox[b][21mm][c]{10cm}{\tcboxfit[colback=ctagblue,colframe=black,width=10cm,height=2cm,fit basedim=20pt,fit fontsize macros,valign=center,frame style={fill=ctagblue}]{\centering \textcolor{white}{\bfseries Test Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis.}}}}
% [...]
如果可能的话,basedim
将使用文本大小使文本适合框:
否则,当文本太长而无法放入具有basedim
大小的框时,它会自动调整大小(缩小):
这可能是文档模板的最佳解决方案,因为您永远不知道将来会将哪些文本放置在那里,也不知道它的长度。
完整代码请见此处:
\documentclass[a4paper,10pt,onecolumn]{article}
% Packages needed
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern} % Latin Modern fonts
\usepackage[english]{babel}
\usepackage{graphicx}
\usepackage{geometry}
\usepackage{lipsum}
\usepackage{xcolor}
\usepackage[many]{tcolorbox}
\graphicspath{{./images/}}
\definecolor{ctagblue}{HTML}{003366}
\usepackage{fancyhdr}
\pagestyle{fancy}
\setlength{\headheight}{2cm}
\renewcommand{\headrulewidth}{0pt}
\lhead{\includegraphics[width=2cm]{Wikimedia-logo}}
\chead{\parbox[b][21mm][c]{10cm}{\tcboxfit[colback=ctagblue,colframe=black,width=10cm,height=2cm,fit basedim=20pt,fit fontsize macros,valign=center,frame style={fill=ctagblue}]{\centering \textcolor{white}{\bfseries Test Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis.}}}}
\rhead{\includegraphics[width=2cm]{Wikimedia-logo}}
\begin{document}
\chapter{Test}
\lipsum
\end{document}
答案3
您可以使用设置整个标题\chead
并在其中安排内容tabular
以更好地管理宽度:
\documentclass{article}
\usepackage[export]{adjustbox}
\usepackage[table]{xcolor}
\usepackage{array}
\definecolor{ctagblue}{HTML}{003366}
\usepackage{fancyhdr}
\pagestyle{fancy}
\setlength{\headheight}{3cm}
\renewcommand{\headrulewidth}{0pt}
\chead{\setlength{\tabcolsep}{0pt}%
\begin{tabular}{m{2cm}p{5pt}m{\dimexpr\textwidth-4cm-10pt}p{5pt}m{2cm}}
\includegraphics[width=2cm,height=2\baselineskip,valign=c]{example-image-a} &
\cellcolor{ctagblue} &
\cellcolor{ctagblue}\textcolor{white}{\bfseries loasdf sdofkjaosdjgas jkgaslk gjlsjasdlgk jasg alksdfj sdklfj alkdfj laskdfjasdf} &
\cellcolor{ctagblue}&
\includegraphics[width=2cm,height=2\baselineskip,valign=c]{example-image-b}
\end{tabular}}
\begin{document}
Some text.
\end{document}
关于上述代码的一些注意事项:
答案4
我认为你只是需要更少的盒子;)。
\documentclass[a4paper]{article}
% Packages needed
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern} % Latin Modern fonts
\usepackage{graphicx}
\usepackage{geometry}
\usepackage{lipsum}
\usepackage{xcolor}
\definecolor{ctagblue}{HTML}{003366}
\usepackage{fancyhdr}
\pagestyle{fancy}
\setlength{\headheight}{3cm}
\renewcommand{\headrulewidth}{0pt}
\lhead{\includegraphics[width=2cm]{tiger}}
\chead{\colorbox{ctagblue}{%
\parbox[b][21mm][c]{10cm}{%
\centering
\textcolor{white}{\bfseries loasdf sdofkjaosdjgas jkgaslk gjlsjasdlgk jasg alksdfj sdklfj alkdfj laskdfjasdf}%
}%
}%
}
\rhead{\includegraphics[width=2cm]{tiger}}
\begin{document}
\chapter{Test}
\lipsum
\end{document}
请注意,我使用了老虎图像,因为它是标准 TeX 发行版的一部分。此外,10pt
和onecolumn
是 的默认设置article
。
要按照 Bernard 的建议“翻转”老虎,您可以使用\reflectbox{}
。例如:
\rhead{\reflectbox{\includegraphics[width=2cm]{tiger}}}
如果你想保护标题不受损害:
或者
\lhead{\reflectbox{\includegraphics[width=2cm]{tiger}}}
如果你的文本容易出现以下情况: