Re: Modificare ClassicThesis con il pacchetto ArsClassica

#25868
Up
0
Down
::

Ciao a tutti.

Sto scrivendo un pacchetto e ho bisogno del vostro consiglio per risolvere qualche problema.

Il pacchetto ArsClassica modifica alcuni aspetti tipografici dello stile ClassicThesis, permettendo di riprodurre la veste grafica della guida “L’arte di scrivere con LaTeX”. La presente ne è la discussione di riferimento.

Non sono un programmatore, e scrivere un pacchetto come LaTeX comanda non è cosa facile. Tuttavia, il codice del pacchetto è stato scritto quasi completamente dai guru del forum -Enrico e Andrea- di cui mi fido ciecamente. Ora si tratta “solo” di mettere insieme i pezzi.

Chiedo scusa in anticipo per l’ingenuità delle seguenti domande!

1. Il pacchetto richiede classicthesis e classicthesis-ldpkg,
`\usepackage[…]{classicthesis-ldpkg}
\usepackage[…]{classicthesis}
\usepackage[…]{arsclassica}`
quindi vorrei realizzare un costrutto di questo genere:

Se classicthesis risulta caricato (prima di arsclassica), bene; altrimenti inutile continuare.

Il seguente
`\@ifpackageloaded{classicthesis}%
{\relax}%
{\PackageError{arsclassica}{Package “arsclassica”
requires “classicthesis”.}}
`non funziona:
`Runaway argument?
! Paragraph ended before \PackageError was complete.

\par
`
Stesso discorso per classicthesis-ldpkg.

Basta mettere dentro arsclassica.sty
`\RequirePackage{classicthesis-ldpkg,classicthesis}`
Se i pacchetti fossero già stati caricati prima, per oscuri motivi, non verrebbero comunque caricati. Direi che a livello utente sia preferibile il solo
`\usepackage{arsclassica}`
Mi sembra evidente.

2. Il pacchetto, fra l’altro, ridefinisce il formato dei titoli delle sezioni:
`\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{arsclassica}[…]

\renewcommand{\sfdefault}{iwona}

\RequirePackage{titlesec}

\titleformat{\section}
{\normalfont\Large\sffamily}{\textsc%
{\MakeTextLowercase{\thesection}}}%
{1em}{\spacedlowsmallcaps}

`
Se nel preambolo del documento principale viene caricato il pacchetto Iwona
`\usepackage[light,condensed,math]{iwona}`
prima di ClassicThesis e di arsclassica, tutto funziona perfettamente: le parti testuali sono in Palatino (o, eventualmente, in MinionPro) e i titoli delle sezioni sono in Iwona. Se però ometto quella riga e scrivo all’interno di arsclassica.sty
`\RequirePackage[light,condensed,math]{iwona}`
si ha che tutte le parti testuali sono in Iwona. Perché? C’è modo di rimediare (senza chiedere esplicitamente all’utente di caricare il pacchetto Iwona, nel preambolo, prima di ClassicThesis e di arsclassica)?

Direi che è il caso che “iwona” diventi un’opzione del pacchetto arsclassica; se l’utente la sceglie, il tuo codice caricherà il pacchetto al momento opportuno (cioè prima di classicthesis e compagnia). Che debba essere un’opzione mi sembra ovvio, visto che non è detto che tutti abbiano quel font. O forse dovresti prevedere un’opzione “noiwona”, se preferisci che lo stile abbia di default quel font.

3. Il pacchetto definisce un ambiente, sidebyside, per inserire codice LaTeX nel proprio documento (viene mostrato il testo sorgente, sulla sinistra, con accanto il relativo documento composto). Questo ambiente richiede listings con l’opzione writefile:
`\usepackage[writefile]{listings}`
Se scrivo questa riga prima di caricare ClassicThesis e arsclassica, tutto bene. Se però scrivo all’interno di arsclassica.sty
`\RequirePackage[writefile]{listings}`
ottengo l’errore
`! LaTeX Error: Option clash for package listings.
`(anche classicthesis-ldpkg carica listings, senza alcuna opzione). C’è modo di rimediare (senza chiedere esplicitamente all’utente di caricare prima, nel preambolo, listings con l’opzione writefile)?

Stesso discorso di prima. Metti \RequirePackage[writefile]{listings} prima di caricare classicthesis nel tuo arsclassica.sty. Ma forse non è il caso di imporre ai tuoi utenti la definizione di quell’ambiente che è specifica per la guida; potrebbe infatti avere bisogno di caricare listings con altre opzioni, per esempio. Come ti ho già detto altre volte, uno dei difetti di ClassicThesis è di imporre il caricamento di alcuni pacchetti con certe opzioni, ciò che impedisce agli utenti di caricarli con opzioni diverse se non a prezzo di acrobazie.

Ciao
Enrico

Go to top