我想在 marginpar 中添加一些小图像。添加图像的目的是添加一些额外的“有用的”信息,但它们与文档的内容没有直接关系,这就是为什么我想将它们放在 marginpar 中。
使用代码
\marginpar{\sffamily\scriptsize \includegraphics[width=\marginparwidth]{img/gauss.jpg} Johann Carl Friedrich Gauß (latinisiert Carolus Fridericus Gauss; * 30. April 1777 in Braunschweig; † 23. Februar 1855 in Göttingen) war ein deutscher Mathematiker, Astronom, Geodät und Physiker. Er galt bereits zu seinen Lebzeiten als Princeps Mathematicorum („Fürst der Mathematiker“).}
在 marginpar 中给出了一个漂亮的图形,但我希望它被编号并出现在 LOF 中。我尝试使用我在这里的一些示例中看到的 \captionof,但该命令未知。我怎样才能“伪造”图形标题,就像真正的图形标题一样,并将图形添加到 LOF?
第二张图片是我通过手动输入标题文字来伪造的:-)
答案1
为了使用自动编号和一些描述,\caption
这里不能使用,因为\marginpar
(也不是\marginnote
)是浮动环境,但\captionof{figure}
可以工作。这需要caption
box,由于其高度可配置性,强烈推荐使用。
\documentclass[a4paper]{article}
\usepackage{marginnote}
\usepackage[rmargin=4cm]{geometry}
\usepackage{caption}
\usepackage[demo]{graphicx}
\usepackage{blindtext}
\begin{document}
\listoffigures
\clearpage
\section{A section on Ducks}
\marginnote{%
\includegraphics[scale=0.2]{ente}\captionof{figure}{A nice duck}%
}
\blindtext
\blindtext
\marginnote{\includegraphics[scale=0.4]{beeduck}\captionof{figure}{Yet another nice duck}}
\blindtext[2]
\end{document}
答案2
我不知道 caption 包。不过,我发现了另一种很酷的方法,使用以下代码:
\newsavebox{\@margin@floatbox}
\newenvironment{@margin@float}[2][-1.2ex]%
{\FloatBarrier\begin{lrbox}{\@margin@floatbox}%
\begin{minipage}{\marginparwidth}%
% can swap left/right align if desired.
% \checkoddpage
% \ifoddpage
% \def\captionstyle{\sffamily\scriptsize\raggedleft}
% \else
\def\captionstyle{\sffamily\scriptsize\raggedright}
% \fi
\def\@captype{#2}%
\hbox{}\vspace*{#1}%
\noindent%
}
{\end{minipage}%
\end{lrbox}%
\marginpar{\usebox{\@margin@floatbox}}%
}
\newenvironment{marginfigure}[1][-1.2ex]%
{\begin{@margin@float}[#1]{figure}}
{\end{@margin@float}}
这非常有效,让我可以在边距中使用标签和所有内容。我只需使用
\begin{marginfigure}
% includegraphics or whatever
\caption[short caption]{here comes the caption}
\label{any label}
\end{marginfigure}
但我不确定从印刷的角度来看,使用两端对齐或左对齐文本是否更好。