目前,我有一个文档,其中大多数图表和表格的标题都放在边距中,使用mcaption
。但对于某些图表和表格,我需要全宽(文本宽度和边距)。这两种设置都很好用,但我喜欢这样,\begin{figure}
并\begin{table}
自动假定它是一个边距捕获浮动元素。对于超过全宽的图片,我喜欢有一个新的环境\begin{fullwidthfigure}
和\begin{fullwidthtable}
。
\documentclass{article}
\usepackage{mwe}
\usepackage[
left=2.cm,
right=6.5cm,
marginparwidth=4.5cm,
marginparsep=5mm,
a4paper]{geometry} % Page margins
\usepackage{caption}
\usepackage{mcaption}
\usepackage{etoolbox}
\preto\margincap{\captionsetup{options=margincap}}
\begin{document}
\noindent Some text.
\begin{figure} [h]
\begin{margincap}
\centering
\includegraphics[width=0.4\linewidth]{example-image-a}
\caption{A caption in the margin.}
\end{margincap}
\end{figure}
\noindent Some more text.
\begin{figure}[h]
\checkoddpage
\edef\side{\ifoddpage l\else r\fi}%
\makebox[\textwidth][\side]{%
\begin{minipage}[t]{\textwidth+\marginparsep+\marginparwidth}
\centering
\includegraphics[width=\textwidth]{example-image-b}
\caption{A caption for a fullwidth picture. The caption also goes all the way form the left to the right side.}
\end{minipage}%
}%
\end{figure}
\noindent Some more text.
\end{document}
编辑:
我刚刚看到,第二个图形没有占据整个宽度。这是因为缺少操作包吗+
?它在我的其他文档中运行正常……
答案1
您的代码中有两个问题。
- 正如@ChristianHupfer的评论中提到的那样,您需要调用 package
calc
。 然后您的代码将按希望执行您的 + ... - 您需要将
\textwidth
第二个\includegraphics
命令中的 used 更改为\linewidth
。这样做的原因是,您最后将 used 的线宽更改为minipage
(\textwidth+\marginparsep+\marginparwidth
现在由包计算calc
)。 - 我为没有环境的大图像添加了一个版本
figure
,第二个版本有环境。请参阅我添加的评论。因为您使用类,所以article
您不必检查奇数页是否...
完成 MWE(参见标有 的重要行<=======
):
\documentclass{article}
\usepackage{mwe}
\usepackage[
left=2.cm,
right=6.5cm,
marginparwidth=4.5cm,
marginparsep=5mm,
a4paper,
showframe,
]{geometry} % Page margins
\usepackage{caption}
\usepackage{mcaption}
\usepackage{calc} % <===================================================
\usepackage{etoolbox}
\preto\margincap{\captionsetup{options=margincap}}
\begin{document}
\noindent Some text.
\begin{figure}%[h]
\begin{margincap}
\centering
\includegraphics[width=0.4\linewidth]{example-image-a}
\caption{A caption in the margin.}
\end{margincap}
\end{figure}
\noindent Some more text.
\noindent % <======================= no indention for following minipage
\begin{minipage}[t]{\textwidth+\marginparsep+\marginparwidth}
\centering
\includegraphics[width=\linewidth]{example-image-b} % <===============
\captionof{figure}{A caption for a fullwidth picture. The caption also goes all the way form the left to the right side.}
\end{minipage}%
\noindent Some more text 2.
\begin{figure}%[h]
% \checkoddpage
% \edef\side{\ifoddpage l\else r\fi}%
% \makebox[\textwidth][\side]{%
\noindent % <======================= no indention for following minipage
\begin{minipage}[t]{\textwidth+\marginparsep+\marginparwidth}
\centering
\includegraphics[width=\linewidth]{example-image-b} % <===============
\caption{A caption for a fullwidth picture. The caption also goes all the way form the left to the right side.}
\end{minipage}%
% }%
\end{figure}
\end{document}
结果(第 1 页):