- Questo topic ha 20 risposte, 8 partecipanti ed è stato aggiornato l'ultima volta 22 anni, 11 mesi fa da
fabusdr.
-
CreatoreTopic
-
30 Luglio 2003 alle 21:43 #1131
-
CreatoreTopic
-
AutoreRisposte
-
-
6 Agosto 2003 alle 10:29 #1132::
Io ci ho provato e sono riuscita a toglierlo agendo sul file book.cls, alla fine dei comandi ci sono le istruzioni che dicono di scrivere i capitoli e i numeri dei capitoli.Io ho corretto il report e ti dico come ho fatto, tu puoi cercare lo stesso comando su book.cls. report.cls
alla riga 360 ho cancellato (\@chapapp\space \thechapter) era dopo \huge\bfseries
nella riga 366 ho corretto \vskip 40 con \vskip 20 così ho ridotto lo spazio dal titolo del
capitolo al restoScusa ma non sono molto esperta neanche io, però per me ha funzionato. Lucia
-
7 Agosto 2003 alle 21:51 #1133::
Io ci ho provato e sono riuscita a toglierlo agendo sul file book.cls, alla fine dei comandi ci sono le istruzioni che dicono di scrivere i capitoli e i numeri dei capitoli.
Io ho corretto il report e ti dico come ho fatto, tu puoi cercare lo stesso comando su book.cls. report.cls
alla riga 360 ho cancellato (\@chapapp\space \thechapter) era dopo \huge\bfseries
nella riga 366 ho corretto \vskip 40 con \vskip 20 così ho ridotto lo spazio dal titolo del
capitolo al restoScusa ma non sono molto esperta neanche io, però per me ha funzionato. Lucia
Non è opportuno modificare direttamente la classe che si sta utilizzando, ma sarebbe meglio ridefinire il comando che la classe sta utilizzando, inserendo la nuova definizione subito dopo il preambolo del documento e subito prima di `\begin{document}`, fra i comandi `\makeatletter … \makeatother`.
In questo modo non si modifica direttamente la classe book o report, ma solamente alcune variabili all’interno del documento corrente.
Ciao.
-
9 Settembre 2003 alle 8:05 #1134::
Il problema è abbastanza analogo quindi continuo questo 3d:
diciamo che voglio diminuire lo spazio prima del capitolo, lasciando scritta e tutto quanto invariato.
posso certo ricopiare tutta la definizione di report.cls e non modificherei mai la classe come dice zanna (fra l’altro non so se si può farlo senza cambiarlgi nome), ma preferirei agire diversamente perché: primo il preambolo diventa sporco e preferirei avere le lunghe definizioni nelle classi; secondo perché uso fancychapter e non ho voglia di mettermi a smanettare fra codice di classi e di pachetti: più che altro diciamo che non ho tempo; poi magari in un secondo momento potrò mettermi a imparare per la scienza…non esiste un comando semplice, qualche riga, da mettere nel preambolo per avere meno spazio prima del titolo? qualcosa tipo \textwidth?
ciao e grazie a tutti
f
-
9 Settembre 2003 alle 8:59 #1135::
Ciao, crea un nuovo file chiamato ad esempio chapdef.tex ed inserisci il seguente codice (vale per la classe report, e book credo):
`\makeatletter
%\newcommand\chapter{\if@openright\cleardoublepage\else\clearpage\fi
% \thispagestyle{plain}%
% \global\@topnum\z@
% \@afterindentfalse
% \secdef\@chapter\@schapter}
\def\@chapter[#1]#2{\ifnum \c@secnumdepth >\m@ne
\refstepcounter{chapter}%
\typeout{\@chapapp\space\thechapter.}%
\addcontentsline{toc}{chapter}%
{\protect\numberline{\thechapter}#1}%
\else
\addcontentsline{toc}{chapter}{#1}%
\fi
\chaptermark{#1}%
\addtocontents{lof}{\protect\addvspace{10\p@}}%
\addtocontents{lot}{\protect\addvspace{10\p@}}%
\if@twocolumn
\@topnewpage[\@makechapterhead{#2}]%
\else
\@makechapterhead{#2}%
\@afterheading
\fi}
\def\@makechapterhead#1{% Questa è per la versione \chapter
\vspace*{50\p@}%% Spazio dal margine superiore della pagina all'intestazione
{\parindent \z@ \raggedright \normalfont
\ifnum \c@secnumdepth >\m@ne
\huge\bfseries \@chapapp\space \thechapter
\par\nobreak
\vskip 20\p@ % Spazio fra la scritta “capitolo” e il titolo del capitolo
\fi
\interlinepenalty\@M
\Huge \bfseries #1\par\nobreak
\vskip 40\p@ % Spazio fra il titolo del capitolo ed il testo.
}}
\def\@schapter#1{\if@twocolumn
\@topnewpage[\@makeschapterhead{#1}]%
\else
\@makeschapterhead{#1}%
\@afterheading
\fi}
\def\@makeschapterhead#1{% questa è per la versione \chapter*
\vspace*{50\p@}%% Spazio dal margine superiore della pagina al titolo del capitolo
{\parindent \z@ \raggedright
\normalfont
\interlinepenalty\@M
\Huge \bfseries #1\par\nobreak
\vskip 40\p@ % Spazio fra il titolo del capitolo ed il testo, nella versione \chapter*
}}
\makeaother
`Per richiamarlo all’interno del documento, nel preambolo, subito prima di \begin{document} utilizza un \input{chapdef.tex}. Ricordati di inserire come ultima riga del file chapdef.tex il comando \endinput per evitare complicazioni. Le prime linee sono inutili e sono commentate, ma le ho messe per far capire come funziona la definizione del comando \chapter, per completezza.
Ti ho indicato quali valori modificare per avere una diversa spaziatura. I valori da modificare, ovviamente sono i numeri prima di \p@, ad esempio 10\p@, 30\p@, -20\p@ (spaziatura negativa, ovvero togli spazio), ecc… Fai alcune prove. In bocca al lupo per la tesi!!! 😉PS Non funziona con il pacchetto fncychap. Se usi tale pacchetto occorre adattare il codice di volta in volta. Se mi comunichi quale stile di fncychap stai utilizzando, ti posso dare qualche dritta più specifica sul codice.
Ciao ciao.
-
9 Settembre 2003 alle 9:01 #1136
-
9 Settembre 2003 alle 13:13 #1137::
Prova se funziona questa parte di codice, seguendo sempre le istruzioni che ti ho scritto sopra (file di input, \input{file di input} pima di \begin{document}, ecc..):\makeatletter
\renewcommand{\DOCH}{%
\vskip 0\p@ % Questa linea l’ho aggiunta per permetterti di diminuire lo spazio sopra
\settowidth{\px}{\CNV\FmN{\@chapapp}}
\addtolength{\px}{2pt}
\settoheight{\py}{\CNV\FmN{\@chapapp}}
\addtolength{\py}{1pt}\settowidth{\mylen}{\CNV\FmN{\@chapapp}\space\CNoV\thechapter}
\addtolength{\mylen}{1pt}
\settowidth{\pxx}{\CNoV\thechapter}
\addtolength{\pxx}{-1pt}\settoheight{\pyy}{\CNoV\thechapter}
\addtolength{\pyy}{-2pt}
\setlength{\myhi}{\pyy}
\addtolength{\myhi}{-1\py}
\par
\parbox{\textwidth}{%
\rule[\py]{\RW}{\myhi}%
\hskip -\RW%
\rule[\pyy]{\px}{\RW}%
\hskip -\px%
\raggedright%
\CNV\FmN{\@chapapp}\space\CNoV\thechapter%
\hskip1pt%
\mghrulefill{\RW}%
\rule{\RW}{\pyy}\par\nobreak%
\vskip -\baselineskip%
\vskip -\pyy%
\hskip \mylen%
\mghrulefill{\RW}\par\nobreak%
\vskip \pyy}%
\vskip 20\p@} } % Modifica lo spazio dopo l’intestazione e prima del titolo\renewcommand{\DOTI}[1]{%
\raggedright
\CTV\FmTi{#1}\par\nobreak
\vskip 40\p@} % Modifica lo spazio dopo il titolo\renewcommand{\DOTIS}[1]{%
\raggedright
\CTV\FmTi{#1}\par\nobreak
\vskip 40\p@} % Modifica lo spazio dopo il titolo\makeatother
\endinputPer diminuire lo spazio superiore prima dell’intestazione del capitolo, è sufficiente impostare un valore negativo dove ti ho indicato all’inizio del listato. Funziona solo con l’opzione Lenny di fancychap. Pardòn, non so se funziona, non ho provato, le prove le lascio a te… 😆
Ciao ciao.
-
9 Settembre 2003 alle 14:10 #1138::
Grazie mille, funziona a meraviglia.
per amor di completezza c’era solo una } di troppo in
`\vskip 20\p@} } % Modifica lo spazio dopo l'intestazione e prima del titolo`
che deve diventare
`\vskip 20\p@} % Modifica lo spazio dopo l'intestazione e prima del titolo`
grazie mille davvero, sono un bel po’ in dietro con la tesi (capita sempre no?), scrivo giorno e notte e non ho troppo tempo di mettermici da solo, sei stato preziosissimo.
ancora grazie
ciao
fp.s. gli stili delle pagine tipo indice, bibliografia, etc non vengono influenzati dal comando suddetto, la cosa mi va bene perché è più carino così, cmq sapreste mica perché?
-
9 Settembre 2003 alle 19:43 #1139::
Grazie mille, funziona a meraviglia.
8< 8< 8< 8< 8< 8< 8< 8< 8< 8< 8< 8< 8< 8< 8< 8< 8< 8< grazie mille davvero, sono un bel po' in dietro con la tesi (capita sempre no?), scrivo giorno e notte e non ho troppo tempo di mettermici da solo, sei stato preziosissimo. ancora grazie p.s. gli stili delle pagine tipo indice, bibliografia, etc non vengono influenzati dal comando suddetto, la cosa mi va bene perché è più carino così, cmq sapreste mica perché?A dre la verità c’è un modo migliore per modificare la spaziatura superiore. Nel file di input con il codice che hai usato togli la riga che ti avevo aggiunto, ovvero la seguente
`\vskip 0\p@ % Questa linea l'ho aggiunta per permetterti di diminuire lo spazio sopra`
e aggiungi alla fine, prima di \makeatother e di \endinput, il codice riportato di seguito
`\def\@makechapterhead#1{%
\vspace*{50\p@}% Spaziatura in alto tra il titolo del capitolo e il bordo sup. della pagina
{\parindent \z@ \raggedright \normalfont
\ifnum \c@secnumdepth >\m@ne
\DOCH
\fi
\interlinepenalty\@M
\DOTI{#1}
}}
\def\@schapter#1{\if@twocolumn
\@topnewpage[\@makeschapterhead{#1}]%
\else
\@makeschapterhead{#1}%
\@afterheading
\fi}
\def\@makeschapterhead#1{%
\vspace*{50\p@}% Spaziatura in alto tra il titolo indice, biblio. e il bordo sup. della pagina
{\parindent \z@ \raggedright
\normalfont
\interlinepenalty\@M
\DOTIS{#1}
\vskip 40\p@ %Spaziatura in basso tra il titolo indice, bibliografia, ecc… e il testo sotto
}}`Ora ti spiego: nel codice qui sopra ci sono le definizioni di due comandi: \@makechapterhead e \@makeschapterhead. Il primo realizza l’intestazione del comando \chapter, mentre il secondo realizza l’intestazione del comando \chapter* (versione star, ecco il perché della s nel nome makeschapterhead).
Il comando \chapter, come ben sai, si usa per i capitoli numerati, mentre il comando \chapter* è usato per i capitoli non numerati e in particolare è usato internamente ad altri comandi per ottenere il titolo dell’indice, il titolo della bibliografia, ecc..
Ora dovrebbe esserti tutto chiaro leggendo i commenti che ho messo nella parte di codice riportata sopra, dunque il file da includere per poter modificare proprio tutti i parametri è il seguente:`\makeatletter
\renewcommand{\DOCH}{%
\settowidth{\px}{\CNV\FmN{\@chapapp}}
\addtolength{\px}{2pt}
\settoheight{\py}{\CNV\FmN{\@chapapp}}
\addtolength{\py}{1pt}\settowidth{\mylen}{\CNV\FmN{\@chapapp}\space\CNoV\thechapter}
\addtolength{\mylen}{1pt}
\settowidth{\pxx}{\CNoV\thechapter}
\addtolength{\pxx}{-1pt}\settoheight{\pyy}{\CNoV\thechapter}
\addtolength{\pyy}{-2pt}
\setlength{\myhi}{\pyy}
\addtolength{\myhi}{-1\py}
\par
\parbox{\textwidth}{%
\rule[\py]{\RW}{\myhi}%
\hskip -\RW%
\rule[\pyy]{\px}{\RW}%
\hskip -\px%
\raggedright%
\CNV\FmN{\@chapapp}\space\CNoV\thechapter%
\hskip1pt%
\mghrulefill{\RW}%
\rule{\RW}{\pyy}\par\nobreak%
\vskip -\baselineskip%
\vskip -\pyy%
\hskip \mylen%
\mghrulefill{\RW}\par\nobreak%
\vskip \pyy}%
\vskip 20\p@} % Modifica lo spazio dopo l'intestazione e prima del titolo nella versione \chapter\renewcommand{\DOTI}[1]{%
\raggedright
\CTV\FmTi{#1}\par\nobreak
\vskip 40\p@} % Modifica lo spazio dopo il titolo e prima del testo per la versione \chapter\renewcommand{\DOTIS}[1]{%
\raggedright
\CTV\FmTi{#1}\par\nobreak
\vskip 40\p@} % Modifica lo spazio dopo il titolo per la versione \chapter* usata per l'Indice e la Bibliografia ecc…\def\@makechapterhead#1{%
\vspace*{50\p@}% Spaziatura in alto tra l'intestazione del capitolo (\chapter) e il bordo sup. della pagina (quello che ti interessava diminuire)
{\parindent \z@ \raggedright \normalfont
\ifnum \c@secnumdepth >\m@ne
\DOCH
\fi
\interlinepenalty\@M
\DOTI{#1}
}}
\def\@schapter#1{\if@twocolumn
\@topnewpage[\@makeschapterhead{#1}]%
\else
\@makeschapterhead{#1}%
\@afterheading
\fi}
\def\@makeschapterhead#1{%
\vspace*{50\p@}% Spaziatura in alto (\chapter*) tra Indice, Bibliografia, ecc… e il bordo sup. della pagina
{\parindent \z@ \raggedright
\normalfont
\interlinepenalty\@M
\DOTIS{#1}
\vskip 40\p@ %Aggiunta alla spaziatura in basso (\chapter*) tra Indice, bibliografia, ecc… e il testo sotto
}}\makeatother
\endinput`Può apparire complicato, ma è molto più semplice si quanto si pensi. Ora sei in grado di modificare anche le altre spaziature. 😀
Ciao ciao!
-
9 Settembre 2003 alle 21:34 #1140::
Ancora grazie,
tutto a meraviglia. con valori di -50 e 0 per la versione stallata ottengo un risultato ottimo.
la roba è quasi finita, un altro paio di giorni e poi si respira. hai ragione che non dovrebbe essere difficile ma è perlomeno complesso, poi mi metterò a giocarci.grazie zanna!
f
-
28 Settembre 2003 alle 17:07 #1141::
Salve anche io stò usando il pacchetto book per scrivere la mia tesi e stò cercando di cambiarela spaziatura della scritta capitolo etc…. non stò usando il pacchetto fncychap quindi ho preso la prima versione del codice che avete dato ho creato il documnto chapdef.tex etc…
Ma quando vado a compilare il mio documento in cui ho inserito input… mi dà il segunte errore:
!undefined control sequence
\makeaothersbaglio forse ad inserirlo nella cartella del documnto che stò scrivendo?Devo metterlo da qualche altra parte?
Io sto usando miktex per scrivere la tesi.
ciao e grazie
-
28 Settembre 2003 alle 19:02 #1142::
Ciao, come mai non ti registri sul forum?Il miglior consiglio che ti posso dare al momento è quello di procurarti un buon libro su LaTeX, come ad esempio LaTeX Companion oppure A Guide to LaTeX2e. Non è semplice modificare il codice di una classe procedendo a “tentoni”, ovvero a tentativi. a dirla tutta sarebbe meglio conoscere anche un po’ di programmazione TeX.
Nella sezione Recensioni di GuIT trovi la descrizione di un sacco di libri molto utili.
E’ difficile capire cosa sia andato storto nella compilazione del tuo documento e si potrebbe andare avanti per molto tempo senza arrivare a nulla di concreto, anche perché mi pare tu abbia omesso di riportare il messaggio d’errore nella sua forma completa… 🙁
Fornisci un documento MINIMALE che mostri il problema e se siamo in grado di aiutrti lo faremo senz’altro.
-
28 Settembre 2003 alle 19:08 #1143::
!undefined control sequence
\makeaotherLa cosa più semplice in assoluto è che (forse) qualcuno abbia sbagliato a scrivere il comando. Credo che quello giusto sia `\makeatother`Cerca nel file che stavi compilando la stringa “makeaother” e sostituiscila con “makeatother”.
Facci sapere.
Ciao.
-
29 Settembre 2003 alle 9:07 #1144
-
13 Ottobre 2003 alle 20:08 #1145::
Ho provato a leggere i messaggi di questo 3d ma mi pare che l’argomento non venga trattato.Io vorrei che nella class report invece che “Capitolo \thechapter” venisse scritto “Pippo \thachapter”. Convinto che il nome Capitolo fosse identificato dal comando \chaptername, ho provato a fare un \renewcommand{\chaptername}{Pippo}, ma non ha avuto alcun effetto e dunque ho concluso che non è ciò che pensavo.
Come potrei fare?
Grazie in anticipo.
-
13 Ottobre 2003 alle 23:28 #1146
-
14 Ottobre 2003 alle 7:15 #1147::
Convinto che il nome Capitolo fosse identificato dal comando \chaptername, ho provato a fare un \renewcommand{\chaptername}{Pippo}, ma non ha avuto alcun effetto e dunque ho concluso che non è ciò che pensavo.
Invece avevi visto giusto: il “nome” del capitolo e’ proprio in \chaptername. Quello che pero’ si e’ messo in mezzo per pregiudicare il risultato e’ stato l’uso di babel con l’opzione italian (come faccio a sapere che usi quel pacchetto? magia…). Risolvi il tuo prob. sostituendo il semplice \renewcommand con`\AtBeginDocument{\renewcommand{\chaptername}{Pippo}}`
-
14 Ottobre 2003 alle 8:14 #1148
-
14 Ottobre 2003 alle 15:10 #1149::
Risolvi il tuo prob. sostituendo il semplice \renewcommand con`\AtBeginDocument{\renewcommand{\chaptername}{Pippo}}`
Funziona alla perfezione. In effetti hai ragione: ho il babel in italiano.
`\makeatletter
\renewcommand\@chapapp{Pippo}
\makeatother`Mi cambia il nome all’apertura del Chapter ma non cambia il campo nelle testatine. Io ho le testatine e dunque uso la soluzione in alto, ma se a qualcuno non interessa è una valida alternativa.
Grazie mille ad entrambi.
-
17 Ottobre 2003 alle 11:51 #1150::
Visto che questo thread parla di \chapter, lo continuo!!!Come si fa a fare in modo che l’header di una pagina che contiene “Capitolo 1 – Intro…” sia lo stesso a quello di una qualsiasi pagina dove c’è dello scritto comunissimo???
In altre parole, come si fa a fare in modo che l’utilizzo di \chapter non inibisca l’header???
-
17 Ottobre 2003 alle 16:12 #1151::
chapter utilizza come stile di pagina plain. per questo non compaiono gli header.
a parte che di solito è brutto mettere un titolo di capitolo subito sopra al titolo vero e proprio, se proprio vuoi mettere l’header e usi fancyhdr basta ridefinire lo stile plain; vedi manuale per dettagli.
ciao
f
-
-
AutoreRisposte
- Devi essere connesso per rispondere a questo topic.