- Questo topic ha 9 risposte, 3 partecipanti ed è stato aggiornato l'ultima volta 14 anni, 9 mesi fa da .
-
Topic
-
Sulla base di quanto detto da Claudio (@OldClaudio), sto provando a scrivere classicthesis.cls usando anche memoir. Ho aggiunto infatti (almeno per ora) un’opzione per usare memoir come classe “base”. Buona parte del codice originale di CT riguarda tocloft e i comandi \cft<...>, cioè righe del tipo:
`\setlength{\cftbeforechapskip}{.1em}
\addtolength{\cftchapnumwidth}{\newchnumberwidth}
\renewcommand{\cftchappresnum}{\scshape\MakeTextLowercase}`
Memoir implementa tutti i comandi di tocloft, però (secondo una scelta che non mi sembra azzeccatissima) li ridenomina sostituendo “sec” con “section” e “chap” con “chapter”. Io dovrei quindi fare
`\ifcth@memoir
\setlength{\cftbeforechapterskip}{.1em}
\addtolength{\cftsectionnumwidth}{\newchnumberwidth}
\renewcommand{\cftsubsectionpresnum}{\scshape\MakeTextLowercase}
\else
\setlength{\cftbeforechapskip}{.1em}
\addtolength{\cftsecnumwidth}{\newchnumberwidth}
\renewcommand{\cftsubsecpresnum}{\scshape\MakeTextLowercase}
\fi`
ma vorrei evitarlo perché raddoppierei le linee di codice (già innumerevoli) e aggiungerei ridondanza aumentando il rischio di errori. Ho pensato di fare:
`
\def\cth@invoke#1#2{%
\def\@tempa{#1}%
\expandafter\@tempa\expandafter{\csname#2\endcsname}}
\ifcth@memoir
\def\cth@chap{chapter}
\def\cth@sec{section}
\else
\def\cth@chap{chap}
\def\cth@sec{sec}
\fi
\cth@invoke\setlength{cftbefore\cth@chap skip}{.1em}
\cth@invoke\addtolength{cft\cth@sec numwidth}{\newchnumberwidth}
\cth@invoke\renewcommand{cftsub\cth@sec presnum}{\scshape\MakeTextLowercase}`Può andar bene? Esistono soluzioni migliori? Ho scoperto il pacchetto interfaces, ma non mi pare che risolva questi problemi (è fatto per il tocloft originale e non per memoir).
Un’ulteriore domanda: alla fine della classe, sarebbe bene liberare un po’ di memoria cancellando quei comandi? Intendo qualcosa come:
`
\let\cth@chap\undefined
\let\cth@sec\undefined
\let\cth@invoke\undefined
`
È utile? Ne vale la pena?Grazie,
Antonio
- Devi essere connesso per rispondere a questo topic.