Re: Definire un epigraph come nota a margine

#68599
Up
0
Down
::

antonio.macrì” post=67710Voglio definire un comando che visualizzi una citazione (o simile) come nota a margine, da mettere dopo il comando \chapter e prima del testo. Mi piacerebbe che non crei problemi con il posizionamento del testo, cioè che ignori l’eventuale riga vuota lasciata dopo.

Ecco l’idea in pratica e una possibile implementazione:
`\documentclass[10pt,twoside]{scrreprt}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[italian]{babel}
\usepackage[eulerchapternumbers,pdfspacing]{classicthesis}
\usepackage{lipsum}

\setlength{\marginparwidth}{\dimexpr
2\dimexpr\paperwidth-\textwidth\relax/3-3\marginparsep\relax}

\newcommand\epigraph[2]{%
\leavevmode\marginpar{\sffamily\itshape#1\\
\medskip\hfill#2\enspace}%
\let\oldpar\par
\def\par{\let\par\oldpar}\ignorespaces}

\begin{document}
\chapter{Prova}

\epigraph{Security protocols are three-line programs
that people still manage to get wrong.}{Roger M.~Needham}

\lipsum
\end{document}`

Non so quanto sia corretto ridefinire \par in questo modo e inoltre così facendo funziona solo se si lascia una sola riga vuota (con due o più non va).

Quale sarebbe il modo corretto di scrivere un tale comando \epigraph?

Un problema c’è: se non si lascia una riga vuota dopo \epigraph il primo \par che si incontra verrà ignorato.
`\makeatletter
\newcommand\epigraph[2]{%
\leavevmode\marginpar{\sffamily\itshape#1\\
\medskip\hfill#2\enspace}%
\@ignorepars}
\def\@ignorepars{\@ifnextchar\par{\afterassignment\@ignorepars\let\next}{}}
\makeatother`
Ciao
Enrico

Go to top