toglere “capitolo”, spaziatura del titolo e header

  • Creatore
    Topic
  • #1131
    admin
    Amministratore del forum
      Up
      0
      Down
      ::


      qualcuno sa come toglere la scritta “Capitolo n” prima del titolo di ogni capitolo. Non volgio rinunciare alla formattazione del titolo come me la da book (che non so come copiare altrimenti)
      Grazie

    Visualizzazione 19 filoni di risposte
    • Autore
      Risposte
      • #1132
        Up
        0
        Down
        ::


        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 resto

        Scusa ma non sono molto esperta neanche io, però per me ha funzionato. Lucia

      • #1133
        Up
        0
        Down
        ::

        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 resto

        Scusa 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.

      • #1134
        Up
        0
        Down
        ::


        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

      • #1135
        Up
        0
        Down
        ::


        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.

      • #1136
        Up
        0
        Down
        ::


        Grazie mille,
        l’idea di infilarlo in un input non è malvagia!!

        in ogni caso uso Lenny, se mi dai la dritta che dicevi poi prometto di mettermi a studiare il codice.

        ancora grazie mille
        f

      • #1137
        Up
        0
        Down
        ::


        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
        \endinput

        Per 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.

      • #1138
        Up
        0
        Down
        ::


        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
        f

        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é?

      • #1139
        Up
        0
        Down
        ::

        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!

      • #1140
        Up
        0
        Down
        ::


        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

      • #1141
        admin
        Amministratore del forum
          Up
          0
          Down
          ::


          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
          \makeaother

          sbaglio 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

        • #1142
          Up
          0
          Down
          ::


          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.

        • #1143
          Up
          0
          Down
          ::

          !undefined control sequence
          \makeaother

          La 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.

        • #1144
          Up
          0
          Down
          ::


          Certo, probabilmente mi sono sbagliato a scrivere il comando. E’ per questo che consigliavo un buon libro su LaTeX, in modo da essere in grado di riconoscere e correggere errori banali di questo genere. 😉

        • #1145
          Up
          0
          Down
          ::


          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.

        • #1146
          Up
          0
          Down
          ::

          Io vorrei che nella class report invece che “Capitolo \thechapter” venisse scritto “Pippo \thachapter”.

          Come potrei fare?

          Subito prima di \begin{document}:

          `\makeatletter
          \renewcommand\@chapapp{Pippo}
          \makeatother`

          Ciao.

        • #1147
          ev
          Partecipante
            Up
            0
            Down
            ::

            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}}`

          • #1148
            Up
            0
            Down
            ::


            Complimenti a ev per la soluzione più elegante, pulita e chiara della mia! 😉

            Ciao.

          • #1149
            Up
            0
            Down
            ::

            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.

          • #1150
            Up
            0
            Down
            ::


            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???

          • #1151
            Up
            0
            Down
            ::


            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

        Visualizzazione 19 filoni di risposte
        • Devi essere connesso per rispondere a questo topic.

        Go to top