# Text style for marginpar

Is there a way to change the font, font size and so on for \marginpar with a standard LaTeX macro, i.e. without something such as \let\oldmarginpar\marginpar (cp. Problem with Customized Marginpar (in Combination With a ToMarginpar). The \marginnote package e.g. provides \marginfont.

MWE:

\documentclass{book}

\begin{document}
Text text text\marginpar{A short note.}
\end{document}
-

To print out a margin the contents will be save in a savebox. So you can manipulate the default implementation of latex.ltx which is as follows:

\long\def\@ympar#1{%
\@savemarbox\@marbox{#1}%
\global\setbox\@currbox\copy\@marbox
\@xympar}

The mandatory argument is the contents. So simple use:

\long\def\@ympar#1{%
\@savemarbox\@marbox{\tiny #1}%
\global\setbox\@currbox\copy\@marbox
\@xympar}

Based on the special symbol @ you have to use \makeatletter...\makeatother.

-

The easiest way is with xparse:

\usepackage{xparse}
\let\oldmarginpar\marginpar
\RenewDocumentCommand{\marginpar}{om}{%
\IfNoValueTF{#1}
{\oldmarginpar{\mymparsetup #2}}
{\oldmarginpar[\mymparsetup #1]{\mymparsetup #2}}}

\newcommand{\mymparsetup}{\itshape}

In the \mymparsetup command you can put all customizations you want. In this way we can keep the behavior with the optional argument to \marginpar.

The method with \let\oldcs\cs can often lead to unexpected results, when \cs has an optional argument or it's defined with \DeclareRobustCommand. However the kernel provided \marginpar is none of this kind; indeed

texdef -t latex marginpar