将 fancyhdr 的 chead 放入 colorbox 中

将 fancyhdr 的 chead 放入 colorbox 中

我正在尝试创建一个标题,fancyhdr其中使用rheadlhead部分是两个具有相同和已知大小的图像。

在中心,我想放一些文字(可能是文档的标题),但是当文字太长时,它不适合放在页眉中:

输出

我怎样才能强制断开该线并使其适合颜色框?我应该使用其他方法吗?

以下是我迄今为止尝试过的:

\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}

关于上述代码的一些注意事项:

  • adjustbox(带[export]选项)加载graphicx并允许垂直居中内容(通过valign=c)。

  • array提供一个m{<len>}用于细胞垂直锚定的柱子。

  • 创建了两个额外的(空)列,以\tabcolsep在图像和段落文本之间创建类似 的间隙。

答案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 发行版的一部分。此外,10ptonecolumn是 的默认设置article

老虎头

要按照 Bernard 的建议“翻转”老虎,您可以使用\reflectbox{}。例如:

\rhead{\reflectbox{\includegraphics[width=2cm]{tiger}}}

如果你想保护标题不受损害:

老虎在看守

或者

\lhead{\reflectbox{\includegraphics[width=2cm]{tiger}}}

如果你的文本容易​​出现以下情况:

老虎守卫

相关内容