Risposte nei forum create
-
AutoreRisposte
-
::
Ciao a tutti,sto continuando a sviluppare sapthesis e nello scrivere la parte di codice relativa ai margini mi è sorto un dubbio.
Vorrei usare sostanzialmente i valori usati dal pacchetto layaureo nel caso di corpo 11pt (11pt è l’unico corpo disponibile in sapthesis e a4 l’unica dimensione per il foglio).
Premesso che so impostare questi margini sia usando geometry sia con i comandi a basso livello, mi chiedo: è necessario usare geometry?
In fondo non usarlo comporterebbe una dipendenza in meno della mia classe e forse un tempo di compilazione leggermente inferiore.Praticamente ovunque (forum e guide) si consiglia di usare geometry. È solo un discorso di comodità? Se fosse così, sarebbe importante per l’utente finale ma meno per lo sviluppatore di classi e/o pacchetti. Oppure c’entra il fatto che geometry inserisce nel file di output le informazioni relative alla dimensione della pagina (a4 in questo caso)?
Grazie.
Fra
::`\makeatletter
\g@addto@macro\@marginparreset\footnotesize
\makeatother`Funziona (non ho capito come però)! Strepitoso Enrico!!!
Oramai ci sono… ne approfitto. 😉 Esiste un modo migliore di implementare il seguente codice?
`
\let\oldmarginpar\marginpar
\renewcommand\marginpar[1]{\oldmarginpar[\raggedleft\footnotesize #1]{\raggedright\footnotesize #1}}
`
::
Grazie Enrico,visto i problemi che crea ho deciso di eliminare la ridefinizione di \chapter*
perché non credo sia così utile.
Volevo semplicemente far sì che non ci fosse bisogno di \markboth quando si usa \chapter*.
Ma in realtà quello che di solito serve nelle tesi per fare un capitolo introduzione è un \chapter normale all’interno del \frontmatter.La soluzione l’avevo presa da questo topic: http://www.guit.sssup.it/phpbb/viewtopic.php?t=5022.
Non capisco molto bene che cosa vuoi ottenere con le definizioni del tipo
`
\renewcommand{\title}[1]{\ifx\@empty#1\@empty\else\def\@title{#1}\fi}
`Non lo capisco neanche io… l’avevo copiato da gatech-thesis. 😀
Seguirò il tuo consiglio!Ciao ciao.
Fra
::
A parte il documento già segnalato, ritengo molto utile anche “Appunti di programmazione in TeX e LaTeX” di Enrico Gregorio
che puoi scaricare dalla seguente pagina http://profs.sci.univr.it/~gregorio/egtex.html .Poi ovviamente puoi imparare moltissimo dallo studio dei sorgenti di altri pacchetti o classi.
Comunque ricorda che non è banale realizzare del buon codice quindi cerca sempre di capire se esistono delle soluzioni già disponibili che si possono adattare ai tuoi bisogni.
Ciao ciao
Fra
22 Ottobre 2008 alle 22:27 in risposta a: Ridefinire comando con parametri usando il comando stesso #27993::
Sì, ho sbagliato tutto… non sono stato capace di capire il file book.cls 😥In effetti la prima riga è praticamente inutile però dovrebbe controllare se il comando \orig@schapter esiste già. (Lo consigli anche tu negli “Appunti di programmazione in LaTeX e TeX” a cavallo tra la pagina 15 e la pagina 16. Volevo fare il preciso!)
Credo che userò la seguente ridefinizione nella mia classe, a meno che ci sia un motivo particolare per usare \def al posto di \renewcommand.
`
\newcommand{\orig@schapter}[1]{}
\let\orig@schapter\@schapter
\renewcommand{\@schapter}[1]{\orig@schapter{#1}\markboth{#1}{#1}}
`Grazie per tutto il tempo che dedichi al Forum!
Ciao!
::
Sono un principiante quindi siete avvertiti…Credo di comprendere le motivazioni sia di Lorenzo che di Enrico.
Però credo che una soluzione (banale?) per coniugare le due visioni ci sia.Cosa costerebbe migliorare la classe book aggiungendo un’opzione version sulla falsariga del pacchetto mhchem? Ad esempio, specificando \documentclass[version=2]{book} si userebbe la nuova versione della classe book.
Compilare un vecchio sorgente sarebbe quindi indolore.
Cosa ne pensate?
::
Grazie Enrico!!Per quanto riguarda il 10pt potrei usare l’escamotage del \newcommand detto sopra, ma in ogni caso per ora ho deciso di obbligare all’uso dell’ 11pt, in fondo se deve essere uno stile comune… sono sicuro che qualcuno avrebbe consegnato la tesi compilandola con il 10pt o 12pt…
Solo un appunto sulla spiegazione del 10pt.
Se non ho capito male, usando \LoadClass l’ordine delle opzioni è quindi:1. Opzioni di default della classe richiamata con \LoadClass
2. Opzioni richiamate con \ExecuteOptions
3. Opzioni del comando \LoadClass
4. Opzioni del comando \documentclassE se una opzione viene richiamata più di una volta, le volte successive vengono ignorate.
Credo però che le ultime due siano invertite. Infatti il seguente codice non produce un documento oneside nonostante tale opzione sia richiamata da \documentclass[oneside]{sapthesis}.
`
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{sapthesis}[2009/01/01 Sapienza University of Rome Ph.D. thesis class]% dichiaro e processo le opzioni
\DeclareOption{draft}{\PassOptionsToClass{draft}{book}}
\DeclareOption{oneside}{\PassOptionsToClass{oneside}{book}}
\DeclareOption{twoside}{}
\DeclareOption{10pt}{\ClassError{sapthesis}{Option '10pt' not valid.}{Option '10pt' not valid. '11pt' is the default and the only accepted font size.}}
\DeclareOption{11pt}{}
\DeclareOption{12pt}{\ClassError{sapthesis}{Option '12pt' not valid.}{Option '12pt' not valid. '11pt' is the default and the only accepted font size.}}
%\DeclareOption*{\PassOptionsToPackage{layaureo}{\CurrentOption}}
\ProcessOptions\relax
\LoadClass[a4paper,11pt,twoside]{book}
`Passando a layaureo, potrei anche rinunciare all’allargamento della colonna del testo e al rapporto aureo tra i margini, quello che invece ritengo necessario è avere un margine per la rilegatura regolabile.
Usando layaureo o altre classi, ho il problema di come passargli l’opzione.
Però potrei usare keyval per tutto e poi usare geometry…
Oppure potrei definire molte opzioni tipo 4mm, 5mm, 6mm, 7mm, 8mm, ecc… e passa la paura.
Speriamo che in LaTeX3 introducano una interfaccia completa per le opzioni!Ciao ciao.
Fra
::
Grazie mille Enrico.Purtroppo ho ancora dei problemi.
Prendiamo questo codice:`
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{sapthesis}[2009/01/01 Sapienza University of Rome Ph.D. thesis class]\DeclareOption{draft}{\typeout{sapthesis option 'draft' used} \PassOptionsToClass{\CurrentOption}{book}}
\DeclareOption{10pt}{\typeout{sapthesis option '10pt' used} \PassOptionsToClass{10pt}{book}}
\DeclareOption{11pt}{\typeout{sapthesis option '11pt' used} \PassOptionsToClass{11pt}{book}}
\DeclareOption{12pt}{\typeout{sapthesis option '12pt' used} \PassOptionsToClass{12pt}{book}}
\DeclareOption*{\PassOptionsToPackage{layaureo}{\CurrentOption}}
\ExecuteOptions{11pt}
\ProcessOptions\relax
\LoadClass[a4paper]{book}\RequirePackage{layaureo}
`Quando richiamo la classe, le opzioni draft e 12pt funzionano, l’opzione 10pt viene ignorata (viene stampato il messaggio nel log ma viene comunque usato il corpo a 11pt).
Se aggiungo alle opzioni della classe binding=1cm, anche questa opzione, inizialmente sconosciuta e che dovrebbe essere passata a layaureo, in realtà viene ignorata.Posso aggirare il problema del 10pt, usando comandi come:
`
\newcommand{\@fontsize}{}
…
\DeclareOption{10pt}{\typeout{sapthesis option '10pt' used} \renewcommand{\@fontsize}{10pt}}
…
`Però mi piacerebbe capire se c’è qualcosa di sbagliato in quello che ho scritto o in generale come usare i comandi “standard”.
Ciao ciao
Fra
::
Innanzitutto grazie della risposta.Spesso, nonostante non sia un grande esperto, mi trovo ad aiutare i miei colleghi nell’uso di LaTeX. Molti passano le giornate a rifinire il layout…
Mi è così venuta l’idea di fare una classe, abbastanza chiusa, per le tesi di dottorato in Fisica della Sapienza, sulla falsariga di quelle già esistenti per altre università.
L’idea è stata accettata… ora però mi devo dar da fare!Vorrei limitarmi ad una classe, chiamata sapthesis e basata sulla book, che carichi i latin modern con la codifica T1, cambi il layout di pagina con fancyhdr, usi layaureo per allargare la colonna del testo e dia l’opzione per un margine di rilegatura ed infine che generi un frontespizio.
Le uniche opzioni possibili per la classe sarebbero a4paper(default), 11pt (default), 10pt, 12pt, draft, twoside (default), oneside, binding=…
Questo è quello che sto scrivendo…
`
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{sapthesis}[2009/01/01 Sapienza University of Rome Ph.D. thesis class]% dichiaro e processo le opzioni
\DeclareOption{a4paper}{\typeout{sapthesis option 'a4paper' used} \PassOptionsToClass{a4paper}{book}}
\DeclareOption{draft}{\typeout{sapthesis option 'draft' used} \PassOptionsToClass{draft}{book}}
\DeclareOption{oneside}{\typeout{sapthesis option 'oneside' used} \PassOptionsToClass{oneside}{book}}
\DeclareOption{twoside}{\typeout{sapthesis option 'twoside' used} \PassOptionsToClass{twoside}{book}}
\DeclareOption{10pt}{\typeout{sapthesis option '10pt' used} \PassOptionsToClass{10pt}{book}}
\DeclareOption{11pt}{\typeout{sapthesis option '11pt' used} \PassOptionsToClass{11pt}{book}}
\DeclareOption{12pt}{\typeout{sapthesis option '12pt' used} \PassOptionsToClass{12pt}{book}}
\DeclareOption*{\ClassError{sapthesis}{Unknow option}{The option '\CurrentOption' is unknown}}
\ExecuteOptions{a4paper,11pt,twoside}
\ProcessOptions\relax
\LoadClass{book}% carico i pacchetti
\RequirePackage[T1]{fontenc}
\RequirePackage{lmodern}
\RequirePackage{textcomp}% fanyhdr, frontespizio, ecc…
`Quello che vorrei aggiungere al precedente codice è richiamare layaureo passandogli il margine per la rilegatura dalle opzioni della classe, ad esempio:
`
\documentclass[draft, binding=1cm]{sapthesis}
`
::ciao a tutti,
qualcuno mi ha proposto di aggiungere a layaureo un’opzione small. in pratica si tratterebbe di conservare il layout basato sulla sezione aurea ma rimanendo con la larghezza della riga propria del layout standard. quello che cambia sarebbero margini più armonici per un layout in cui nn sono previste note a margine e la possibilità di aggiungere semplicemente lo spazio per la rilegatura.
se ci sono almeno un paio di persone che ritengono utile tale opzione scrivo rapidamente la versione 0.3.
se ci sono altri suggerimenti sul pacchetto è il momento buono per farmi partecipe.
ciao e grazie
fSalve,
sono nuovo di questo forum.
Forse è passato troppo tempo dall’ultimo post… ma ritengo la proposta dell’opzione small molto interessante.
(Non sono riuscito a trovare una versione ufficiale di layaureo che supporti l’opzione small quindi credo non sia più stata implementata)Francesco
-
AutoreRisposte