在章节开头插入图片

在章节开头插入图片

我希望在章节开头插入一张图片,如附图所示,该图片位于标题右侧的空白处。此外,该图片对于书的每一章来说都必须不同。

我尝试了以下MWE:

\documentclass{book}
\usepackage{titlesec}
\titleformat{\chapter}[block]
 {%\rule{1in}{1in}
  \normalfont\huge\bfseries}
  {\chaptertitlename\ \thechapter\\}
  {0pt}
  {\Huge}
\titlespacing*{\chapter}{0pt}{0pt}{40pt}

\begin{document}
 \chapter{Example}
\end{document}

但它在“章节”一词之前创建(或添加)了一个图像。

例子

答案1

这里有一种方法既适用于编号章节,也适用于未编号章节,使用\parboxes 来定位图像和“章节号”字符串(对于编号章节);对于未编号章节,只包含图像。根据您的需要修改设置:

\documentclass[openany]{book}
\usepackage{graphicx}
\usepackage[explicit]{titlesec}

\makeatletter
\let\@chapterimage\relax
\newcommand\chapterimage[1]{%
  \if\relax\detokenize{#1}\relax
  \else
    \gdef\@chapterimage{\smash{\includegraphics[width=4cm,height=5cm,keepaspectratio]{#1}}}
  \fi
}

\titleformat{\chapter}[display]
  {\normalfont\huge\bfseries}
  {}
  {0pt}
  {\parbox[t]{.4\textwidth}{\chaptertitlename\ \thechapter}\hfill
    \parbox[t]{.4\textwidth}{\@chapterimage}\\[20pt]%
    \Huge#1
  }
\titleformat{name=\chapter,numberless}[display]
  {\normalfont\huge\bfseries}
  {}
  {0pt}
  {\parbox[t]{.4\textwidth}{\mbox{}}\hfill
    \parbox[t]{.4\textwidth}{\@chapterimage}\\[20pt]%
    \Huge#1
  }
\titlespacing*{\chapter}{0pt}{0pt}{40pt}

\newcommand\nochapterimage{
  \let\@chapterimage\relax
}
\makeatother

\begin{document}

\chapterimage{dog1}
\chapter*{Test unnumbered chapter}

\nochapterimage
\chapter*{Another test unnumbered chapter}

\chapter{Test numbered chapter}

\chapterimage{dog2}
\chapter{Another test numbered chapter}

\end{document}

在此处输入图片描述

用于\chapterimage声明要用于特定章节的图像。用于\nochapterimage不应接收图像的章节(代码显示了两个命令的实际作用)。

我使用 class 选项openany只是为了举例。

答案2

这很简单,只需应用eso-pic当您使用带星号的展示位置宏版本时:

在此处输入图片描述

\documentclass[openany]{book}
\usepackage{graphicx,eso-pic}

\newcommand\chapterimage[2][]{%
  \AddToShipoutPictureBG*{% Add picture to BackGround on this page only
    \AtTextUpperLeft{% Position at upper left of text block
      \hspace*{\textwidth}% Move over to upper right of text block
      \llap{% Ignore horizontal width and overlap to the left
        \smash{% Ignore vertical height
          \raisebox{-\height}{% Lower so top touches baseline
            \includegraphics[#1]{#2}}}}}}}% Include image with options

\begin{document}

\chapter*{Test unnumbered chapter}
\chapterimage[width=4cm]{example-image-a}

\chapter*{Another test unnumbered chapter}

\chapter{Test numbered chapter}

\chapter{Another test numbered chapter}
\chapterimage[height=50pt,angle=45]{example-image-b}

\end{document}

\AddToShipoutPictureBG*将内容添加到页面内容的背景中(或下方),同时\AddToShipoutPictureFG*将其放置在页面内容的前景中(顶部)。

答案3

另一个选项是使用 插入图像tikz。这种方法的一个优点是您可以精确控制图像相对于章节标题或页面内容的位置和大小。缺点是,如果图像大小差异很大,您可能需要手动反复试验每个图像。我有一些图像的宽度等于文本宽度,因此我尝试了这种方法,并且所有章节图像的相对坐标对我来说都是相同的。

使用了这两个包:

\usepackage{tikz}
\usetikzlibrary{calc}

您可以将图像放置在相对坐标页面。此代码必须添加在\chapter命令之后,否则它不会显示在同一页面上。

 \begin{tikzpicture}[remember picture,overlay,shift=(current page.north west)]
\begin{scope}[x={(current page.north east)},y={(current page.south west)}]
\node [overlay,remember picture] at (0.35,0.16)  % these numbers will have to be worked for your page /chapter headings with trial and error     
{\includegraphics[width=\textwidth]{figures.jpg}};
\end{scope}
\end{tikzpicture}

相关内容