图像大于带有双面书籍类别的文本

图像大于带有双面书籍类别的文本

诀窍表明这里因为包含大于\textwidth(带有\makebox)的图像可以与文档类article或带有一起使用,但oneside book不适用于带有twoside book,即使我设置nomarginpar\marginparsep= 0pt,缺少什么?

\documentclass{book}
\usepackage[nomarginpar]{geometry}
\setlength{\marginparsep}{0pt}
\usepackage{graphicx}
\usepackage{showframe}
\begin{document}
\begin{figure}%
  \makebox[\textwidth][c]{\includegraphics[width=\paperwidth]{example-image}}%
  \caption{My caption}
\end{figure}
\end{document}

在此处输入图片描述

PS = 我知道我可以使用adjustbox,我只想知道为什么这个技巧对twoside book课堂不起作用。

答案1

正反页的边距通常不对称,因此您需要考虑正确的边距(假设已加载包)。检查我们是在偶数页还是奇数\Gm@lmargin\Gm@rmargingeometry并不简单,但使用例如changepage包我们可以做到

\documentclass{book}

\usepackage{geometry}
\usepackage{graphicx}
\usepackage{showframe}

\usepackage[strict]{changepage}
\newcommand*{\foo}[1]{% choose a better name :-)
   \checkoddpage
   \makebox[\textwidth][l]{\kern-\csname Gm@\ifoddpage l\else r\fi margin\endcsname\includegraphics[width=\paperwidth]{#1}}%
}

\begin{document}

\begin{figure}
  \foo{example-image-a}
  \caption{On a recto page}
\end{figure}

\begin{figure}
  \foo{example-image-b}
  \caption{On a verso page}
\end{figure}

\end{document}

在此处输入图片描述

请注意,这基本上使用标签,因此通常需要进行几次编译才能工作。或者,您可以使用包scrextend(来自 KoMa 包)

\usepackage{scrextend}
\makeatletter
\newcommand*{\foo}[1]{%
   \makebox[\textwidth][l]{\ifthispageodd{\kern-\Gm@lmargin}{\kern-\Gm@rmargin}\includegraphics[width=\paperwidth]{#1}}%
}
\makeatother

答案2

正如我在评论中提到的那样:使用\adjustwidth中定义的宏changeapage(它也是memoir文档类的一部分)很简单:

\documentclass[twodside]{book}
\usepackage{geometry}
\usepackage{graphicx}
\usepackage[strict]{changepage}
%---------------- Show page layout. Don't use in a real document!
\usepackage{showframe}
\renewcommand\ShowFrameLinethickness{0.15pt}
\renewcommand*\ShowFrameColor{\color{red}}
%---------------------------------------------------------------%

\begin{document}
    \begin{figure}
\begin{adjustwidth*}{-\marginparwidth}{-\marginparwidth}
\begin{minipage}{\linewidth}
\includegraphics[width=\linewidth]{example-image}%
  \caption{My caption}
\end{minipage}
\end{adjustwidth*}
    \end{figure}

    \begin{figure}%
\begin{adjustwidth*}{-\marginparwidth}{-\marginparwidth}
\begin{minipage}{\linewidth}
\includegraphics[width=\linewidth]{example-image}%
  \caption{My caption}
\end{minipage}
\end{adjustwidth*}
    \end{figure}
\end{document}

注意:的第二个参数adjustwidth*是外边距的宽度(通常等于marginparsep+ \marginparidth

在此处输入图片描述

相关内容