在开始之前,我了解:
\chapter{My Chapter Title\hfill\includegraphics{image}}
但这不是我所寻找的。
我想要以下结果:
接下来是我尝试过的所有方法(以及它们各自的结果):
\chapter{Devise}\tabto{13cm}\includegraphics[height=2cm]{DEVISE_logo.png}
\chapter[Devise]{Devise\hfill\parbox[c]{.5\textwidth}{\hfill\includegraphics[height=2cm]{DEVISE_logo.png}}}
\begin{minipage}[c]{.5\linewidth}
\chapter{Devise}
\end{minipage}
\begin{minipage}[c]{.5\linewidth}
\hfill\includegraphics[height=2cm]{DEVISE_logo.png}
\end{minipage}
\parbox[c]{.5\linewidth}{\chapter{Devise}}\parbox[c]{.5\linewidth}{\hfill\includegraphics[height=2cm]{DEVISE_logo.png}}
附言:我发布的所有图片都具有相同的宽度,因此您会注意到最后两张图片的章节标题是偏移的。
只需补充 John Kormylo 找到的解决方案:
由于他发现章节块(编号+空格+标题)的高度为 2.3 厘米,因此要将图像放置在该块的中心线上,只需执行以下操作:
\savebox{\tempbox}{\raisebox{-((X-2.3)/2)cm}[0pt][0pt]{\includegraphics[height=Xcm]{example-image}}}
(将 X 替换为您所需的图像高度)
答案1
22pt 是通过反复试验得出的。它应该代表标题所用字体的高度加上 1/2 的间隙。出于某种原因,\chapter 不喜欢 \raisebox,因此使用了 \savebox。
\documentclass{book}
\usepackage{graphicx}
\usepackage{mwe}
\newsavebox{\tempbox}
\begin{document}
\savebox{\tempbox}{\raisebox{22pt}[\height]{\includegraphics[width=3cm]{example-image}}}
\chapter[My Chapter Title]{My Chapter Title\hfill\usebox{\tempbox}}% corrected
This space left blank.
\end{document}
这是重叠文本的另一种形式。同样,2.3cm 是通过反复试验找到的。
\savebox{\tempbox}{\raisebox{0pt}[0pt][0pt]{\includegraphics[height=2.3cm]{example-image}}}
答案2
这是一个稍微复杂一点的解决方案:将图片以及可能的选项作为 的尾随可选参数给出\chapter
。
可以使用标准\chapter
语法并定义\chapterfigure
需要放在之前的命令\chapter
。
\documentclass[a4paper]{book}
\usepackage{xparse,graphicx,xpatch}
\let\latexchapter\chapter
\ExplSyntaxOn
\RenewDocumentCommand{\chapter}{somo}
{
\bool_gset_false:N \g_matthieu_chapter_figure_bool
\IfBooleanTF{#1}
{\latexchapter*{#3}}
{
\IfNoValueTF{#4}
{
\IfNoValueTF{#2}
{\latexchapter{#3}}
{\latexchapter[#2]{#3}}
}
{
\bool_gset_true:N \g_matthieu_chapter_figure_bool
\placefigure{#4}
\IfNoValueTF{#2}
{\latexchapter{#3}}
{\latexchapter[#2]{#3}}
}
}
}
\NewDocumentCommand{\placefigure}{m}
{
\keys_set:nn { matthieu/placefigure } { #1 }
\matthieu_placefigure:V \l_matthieu_placefigure_options_tl
}
\keys_define:nn { matthieu/placefigure }
{
options .tl_set:N = \l_matthieu_placefigure_options_tl,
file .tl_set:N = \l_matthieu_placefigure_file_tl,
file .initial:n = {},
}
\box_new:N \l_matthieu_figure_box
\dim_new:N \l_matthieu_halfheight_dim
\bool_new:N \g_matthieu_chapter_figure_bool
\cs_new_protected:Npn \matthieu_placefigure:n #1
{
\hbox_set:Nn \l_matthieu_figure_box
{
\includegraphics[#1]{ \l_matthieu_placefigure_file_tl }
}
\hbox_set_to_wd:Nnn \l_matthieu_figure_box { \textwidth }
{
\hfil
\box_move_down:nn { \box_ht:N \l_matthieu_figure_box / 2 }
{ \box_use:N \l_matthieu_figure_box }
}
\box_set_ht:Nn \l_matthieu_figure_box { 0pt }
\box_set_dp:Nn \l_matthieu_figure_box { 0pt }
}
\cs_generate_variant:Nn \matthieu_placefigure:n { V }
\makeatletter
\xpatchcmd{\@makechapterhead}
{ \vskip 20\p@ }
{
\vskip 10\p@ \nointerlineskip
\bool_if:NT \g_matthieu_chapter_figure_bool { \box_use:N \l_matthieu_figure_box }
\nointerlineskip
\vskip 10\p@
}
{}{}
\makeatother
\ExplSyntaxOff
\begin{document}
\let\cleardoublepage\relax % just to show a few chapters
\chapter{My chapter title}[
file=example-image,
options={width=3cm,height=2cm}
]
\chapter{My chapter title}[
file=example-image,
options={width=3cm,height=30pt}
]
\chapter{My chapter title}[
file=example-image,
options={width=3cm,height=10pt}
]
\end{document}