- Questo topic ha 5 risposte, 2 partecipanti ed è stato aggiornato l'ultima volta 14 anni fa da .
-
Topic
-
Ciao a tutti!Su consiglio di Claudio, vorrei sistemare il codice di suftesi usando il pacchetto xkeyval.
Tale pacchetto promette miracoli, e leggendo la documentazione pare che ciò sia vero.
Il problema è che tale documentazione è totalmente astratta, e non riesco a trovare la chiave di volta,
se non per situazioni semplicissime.
Veniamo a un problema specifico. Poniamo di voler creare una classe molto semplice basata su book
e che questa classe abbia una sola opzione (oltre a tutte quelle di book).
Tale opzione dovrebbe permettere di scegliere due formati diversi per gli elenchi puntati: stile1 e stile2,
da usare così:
`\documentclass[elenchi=stile1]{testxkeyval}`Tali formati, poi, vanno definiti con il pacchetto enumitem.
Poniamo di definirli così:
`\RequirePackage{enumitem}
%stile1
\setlist[itemize]{leftmargin=\parindent}%stile2
\setlist[itemize]{leftmargin=2\parindent}
`A questo punto come si scrive il file di classe?
Ho capito che xkeyval permette diversi approcci, più o meno “puri”.
Qual è quello migliore?Sono riuscito a creare un’opzione simile con un codice della doc di xkeyval, e precisamente questo:
`\NeedsTeXFormat{LaTeX2e}[2005/12/01]
\ProvidesClass{testxkeyval}
[A test class]
\RequirePackage{xkeyval}\define@choicekey *{testxkeyval.cls}{align}[\val\nr]{left,center,right}{%
\ifcase\nr\relax
\raggedright \or
\centering \or
\raggedleft \fi}\DeclareOptionX {defaultparindent}[1.5em]{\setlength\parindent{#1}}
\ExecuteOptionsX{defaultparindent=1em,align=center}
\ProcessOptionsX\relax\LoadClass{book}
\endinput
`L’opzione align accetta tre valori: left, center, right.
La classe esegue di default align=center. Il valore align=right, per esempio, può essere dato con la sintassi seguente:
`\documentclass[align=right]{textxkeyval}`
C’è poi un’altra opzione che permette di cambiare il valore di \parindent.
L’opzione è anche più complessa di quello che serve a me, perché permette di impostare valori arbitrari come:
`\documentclass[defaultparindent=5cm]{textxkeyval}`
Non ho ancora capito come renderla più semplice, in modo che
defaultparindent non accetti valori e semplicemente imposti \parindent a 1.5 em.
Ma è tardi e comincio a non connettere più 🙄Grazie in anticipo a tutti.
Ciao
Ivan
- Devi essere connesso per rispondere a questo topic.