1

I'd like to put small graphics into the margin via \marginpar. The top of the figures shall be aligned to the top of the text line they refer to. I found around here the suggestion to put a \vskip0pt into the marginpar, which seems to work somewhat, but the placement is still not perfect. In good LaTeX style I would like to have a solution that works automatically, i.e., without pixel-adjusting manually every figure, and is robust (font sizes, line spreads etc.).

In the following MWE the problem is particularly visible in 1.2.1 and 1.2.2

\documentclass[twoside]{article}

\usepackage[demo]{graphicx}

\begin{document}
\section{Graphical note}
\subsection{With new paragraph}
\subsubsection{Text blocks}

Foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo
foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo
foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo.

% \leavevmode% makes things worse
%% \vksip3pt seems to be correct
\marginpar{\vskip0pt\includegraphics[width=4cm,height=1cm]{test}}%
Bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar
bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar
bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar.

\subsubsection{Equation ending}

Foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo
foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo
foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo.
\begin{equation}
  a = b
\end{equation}%

% \leavevmode% makes things worse
%% seems OK
\marginpar{\vskip0pt\includegraphics[width=4cm,height=1cm]{test}}%
Bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar
bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar
bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar.

\subsection{Without new paragraph}
\subsubsection{Text blocks}

Foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo
foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo
foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo.
%% \vksip-7pt seems to be correct
\marginpar{\vskip0pt\includegraphics[width=4cm,height=1cm]{test}}%
Bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar
bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar
bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar.

\subsubsection{Equation ending}

Foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo
foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo
foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo.
\begin{equation}
  a = b
\end{equation}%
%% \vksip-7pt seems to be correct
\marginpar{\vskip0pt\includegraphics[width=4cm,height=1cm]{test}}%
Bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar
bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar
bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar.

\clearpage
\section{With textual note}
The following four cases work fine.
\subsection{With new paragraph}
\subsubsection{Text blocks}

Foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo
foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo
foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo.

\leavevmode%
\marginpar{Baz baz baz baz baz}%
Bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar
bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar
bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar.

\subsubsection{Equation ending}

Foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo
foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo
foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo.
\begin{equation}
  a = b
\end{equation}

\leavevmode%
\marginpar{Baz baz baz baz baz}%
Bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar
bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar
bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar.

\subsection{Without new paragraph}
\subsubsection{Text blocks}

Foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo
foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo
foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo.
\marginpar{Baz baz baz baz baz}%
Bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar
bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar
bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar.

\subsubsection{Equation ending}

Foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo
foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo
foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo.
\begin{equation}
  a = b
\end{equation}
\marginpar{Baz baz baz baz baz}%
Bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar
bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar
bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar.

\end{document}

sample output

mafp
  • 19,096

1 Answers1

2

You can change the .7 multiplier of \baselineskip for fine-tuned adjustments. Note, the \rule at the beginning of \ffig is an artificial way to ensure that a new paragraph is started. If \marginpar is otherwise called at the very beginning of a paragraph, it actually attaches itself to the last line of the prior paragraph. Since you had several instances of wanting to place your \marginpar at the beginning of a paragraph, this was needed. Also, the \height parameter adjustment was mentioned by Martin Scharrer, at Vertical alignment of inline images.

\documentclass[twoside]{article}

\usepackage[demo]{graphicx}

\newcommand\ffig[1]{%
  \rule{0ex}{1ex}%
  \marginpar{\smash{\raisebox{.7\baselineskip}{\raisebox{-\height}{#1}}}}%
}

\begin{document}
\section{Graphical note}
\subsection{With new paragraph}
\subsubsection{Text blocks}

Foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo
foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo
foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo.

\ffig{\includegraphics[width=4cm,height=1cm]{test}}%
Bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar
bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar
bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar.

\subsubsection{Equation ending}

Foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo
foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo
foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo.
\begin{equation}
  a = b
\end{equation}%

\ffig{\includegraphics[width=4cm,height=1cm]{test}}%
Bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar
bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar
bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar.

\subsection{Without new paragraph}
\subsubsection{Text blocks}

Foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo
foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo
foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo.
\ffig{\includegraphics[width=4cm,height=1cm]{test}}%
Bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar
bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar
bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar.

\subsubsection{Equation ending}

Foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo
foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo
foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo.
\begin{equation}
  a = b
\end{equation}%
\ffig{\includegraphics[width=4cm,height=1cm]{test}}%
Bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar
bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar
bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar.

\clearpage
\section{With textual note}
The following four cases work fine.
\subsection{With new paragraph}
\subsubsection{Text blocks}

Foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo
foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo
foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo.

\leavevmode%
\marginpar{Baz baz baz baz baz}%
Bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar
bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar
bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar.

\subsubsection{Equation ending}

Foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo
foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo
foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo.
\begin{equation}
  a = b
\end{equation}

\leavevmode%
\marginpar{Baz baz baz baz baz}%
Bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar
bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar
bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar.

\subsection{Without new paragraph}
\subsubsection{Text blocks}

Foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo
foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo
foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo.
\marginpar{Baz baz baz baz baz}%
Bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar
bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar
bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar.

\subsubsection{Equation ending}

Foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo
foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo
foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo.
\begin{equation}
  a = b
\end{equation}
\marginpar{Baz baz baz baz baz}%
Bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar
bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar
bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar.

\end{document}

enter image description here

  • I would suggest to collapse the two raiseboxes into one (using the calc package for computation). The code is also not robust regarding font sizes: making the text \Huge requires adaption of the 0.7\baselineskip. +1 nonetheless. – mafp May 14 '13 at 16:00
  • @mafp Both valid points. I always debate internally on whether to load another package (in this case calc) or make a less efficient command (nested \raisebox). – Steven B. Segletes May 14 '13 at 17:34
  • I'm fine with that. Btw, I changed the \raisebox parameter to \ht\strutbox-\height, this seems to be conceptually clearer. – mafp May 14 '13 at 21:20
  • I just found out that \marginnote of the marginnote package works out of the box, except for text size changes. So I think I will use that. – mafp May 14 '13 at 21:22