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