[Risolto] Emulare lo stile dei capitoli “veelo” di memoir

  • Questo topic ha 6 risposte, 2 partecipanti ed è stato aggiornato l'ultima volta 15 anni fa da admin.
  • Creatore
    Topic
  • #63279
    admin
    Amministratore del forum
      Up
      0
      Down
      ::


      Buona domenica a tutti.

      Sfogliando il manuale della classe memoir ho visto lo stile “veelo” dell’intestazione dei capitoli. Lo trovo carino. Voglio cercare di riprodurlo con la classe book. Ho pensato, senza ricorrere a pacchetti extra, qualora ve ne fossero (titlesec?), di modificare il comando \@makechapterhead della classe book.

      Ho pensato a due possibili alternative:

      `\makeatletter
      \def\@makechapterhead#1{%
      \vspace*{50\p@}%
      {\parindent \z@ \raggedleft \normalfont
      \ifnum \c@secnumdepth >\m@ne
      \if@mainmatter
      \huge\bfseries \MakeUppercase\@chapapp\marginpar{%
      \scalebox{7}{\thechapter}}
      \par\nobreak
      \vskip 20\p@
      \fi
      \fi
      \interlinepenalty\@M
      \Huge \bfseries #1\par\nobreak
      \vskip 40\p@
      }}
      \makeatother`
      oppure

      `\makeatletter
      \def\@makechapterhead#1{%
      \begingroup
      \vspace*{50\p@}%
      {\parindent \z@ \raggedleft \normalfont
      \ifnum \c@secnumdepth >\m@ne
      \if@mainmatter
      \huge\bfseries \hfill
      \addtolength{\hsize}{1.5cm}
      \makebox[\hsize][r]{\MakeUppercase\@chapapp%
      \makebox[1.5cm][r]{\scalebox{3}{\thechapter}}}

      \addtolength{\hsize}{-1.5cm}
      \par\nobreak
      \vskip 20\p@
      \fi
      \fi
      \interlinepenalty\@M
      \Huge \bfseries #1\par\nobreak
      \vskip 40\p@
      }
      \endgroup
      }
      \makeatother`
      Che ne pensate dello stile? Che ne pensate dei codici? Io preferisco il primo.

      Attendo commenti
      Orlando

    Visualizzazione 5 filoni di risposte
    • Autore
      Risposte
      • #63280
        Up
        0
        Down
        ::

        ansys” post=62210Buona domenica a tutti.

        Sfogliando il manuale della classe memoir ho visto lo stile “veelo” dell’intestazione dei capitoli. Lo trovo carino. Voglio cercare di riprodurlo con la classe book. Ho pensato, senza ricorrere a pacchetti extra, qualora ve ne fossero (titlesec?), di modificare il comando \@makechapterhead della classe book.

        Ho pensato a due possibili alternative:

        `\makeatletter
        \def\@makechapterhead#1{%
        \vspace*{50\p@}%
        {\parindent \z@ \raggedleft \normalfont
        \ifnum \c@secnumdepth >\m@ne
        \if@mainmatter
        \huge\bfseries \MakeUppercase\@chapapp\marginpar{%
        \scalebox{7}{\thechapter}}
        \par\nobreak
        \vskip 20\p@
        \fi
        \fi
        \interlinepenalty\@M
        \Huge \bfseries #1\par\nobreak
        \vskip 40\p@
        }}
        \makeatother`
        oppure

        `\makeatletter
        \def\@makechapterhead#1{%
        \begingroup
        \vspace*{50\p@}%
        {\parindent \z@ \raggedleft \normalfont
        \ifnum \c@secnumdepth >\m@ne
        \if@mainmatter
        \huge\bfseries \hfill
        \addtolength{\hsize}{1.5cm}
        \makebox[\hsize][r]{\MakeUppercase\@chapapp%
        \makebox[1.5cm][r]{\scalebox{3}{\thechapter}}}

        \addtolength{\hsize}{-1.5cm}
        \par\nobreak
        \vskip 20\p@
        \fi
        \fi
        \interlinepenalty\@M
        \Huge \bfseries #1\par\nobreak
        \vskip 40\p@
        }
        \endgroup
        }
        \makeatother`
        Che ne pensate dello stile? Che ne pensate dei codici? Io preferisco il primo.

        Attendo commenti
        Orlando

        Questo è il primo codice rivisto; ho tolto il nero a “CHAPTER” e messo anche un codice che permette di calcolare allo stesso modo la grandezza del numero.
        `\edef\@HUGEsize{\ifcase\@ptsize{\@xxvpt}{30}\or{30}{37}\or{36}{45}\fi}
        \providecommand\HUGE{\expandafter\fontsize\@HUGEsize\selectfont}
        \def\@makechapterhead#1{%
        \vspace*{50\p@}%
        {\parindent \z@ \raggedleft \normalfont
        \ifnum \c@secnumdepth >\m@ne
        \if@mainmatter
        \LARGE\MakeUppercase\@chapapp
        \makebox[0pt][l]{\ \HUGE\thechapter}
        \par\nobreak
        \vskip 20\p@
        \fi
        \fi
        \interlinepenalty\@M
        \HUGE \bfseries #1\par\nobreak
        \vskip 40\p@
        }}`
        Non c’è alcun bisogno di \marginpar (che è una pazzia comunque :wink:). Con \raggedleft la riga “Capitolo 1” viene appoggiata al margine destro; tutto ciò che ti serve è che il numero sporga sulla destra: \makebox[0pt][l]{…} è quello che ci vuole.

        Ciao
        Enrico

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

          egreg9″ post=62217Questo è il primo codice rivisto; ho tolto il nero a “CHAPTER” e messo anche un codice che permette di calcolare allo stesso modo la grandezza del numero.
          `\edef\@HUGEsize{\ifcase\@ptsize{\@xxvpt}{30}\or{30}{37}\or{36}{45}\fi}
          \providecommand\HUGE{\expandafter\fontsize\@HUGEsize\selectfont}
          \def\@makechapterhead#1{%
          \vspace*{50\p@}%
          {\parindent \z@ \raggedleft \normalfont
          \ifnum \c@secnumdepth >\m@ne
          \if@mainmatter
          \LARGE\MakeUppercase\@chapapp
          \makebox[0pt][l]{\ \HUGE\thechapter}
          \par\nobreak
          \vskip 20\p@
          \fi
          \fi
          \interlinepenalty\@M
          \HUGE \bfseries #1\par\nobreak
          \vskip 40\p@
          }}`
          Non c’è alcun bisogno di \marginpar (che è una pazzia comunque :wink:). Con \raggedleft la riga “Capitolo 1” viene appoggiata al margine destro; tutto ciò che ti serve è che il numero sporga sulla destra: \makebox[0pt][l]{…} è quello che ci vuole.

          Ciao
          Enrico

          Grazie mille. Se volessi il numero leggermente più grande? Ritorno a \scalebox?

          Grazie
          Orlando

        • #63282
          Up
          0
          Down
          ::

          ansys” post=62218Se volessi il numero leggermente più grande? Ritorno a \scalebox?

          Stai scherzando, vero?
          `\edef\@XHUGEsize{\ifcase\@ptsize{50}{0}\or{60}{0}\or{70}{0}\fi}
          \providecommand\XHUGE{\expandafter\fontsize\@XHUGEsize\selectfont}`
          Aggiusta i valori, ne ho messi a caso. Il secondo può benissimo essere 0, perché tanto il numero è composto in una \hbox e quindi l’avazamento di riga è irrilevante. A meno che tu non desideri usare altrove \XHUGE (e te lo sconsiglio vivamente). Naturalmente devi usare font che ammettano ingrandimenti arbitrari.

          Ciao
          Enrico

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

            egreg9″ post=62222

            Se volessi il numero leggermente più grande? Ritorno a \scalebox?

            Stai scherzando, vero?
            `\edef\@XHUGEsize{\ifcase\@ptsize{50}{0}\or{60}{0}\or{70}{0}\fi}
            \providecommand\XHUGE{\expandafter\fontsize\@XHUGEsize\selectfont}`
            Aggiusta i valori, ne ho messi a caso. Il secondo può benissimo essere 0, perché tanto il numero è composto in una \hbox e quindi l’avazamento di riga è irrilevante. A meno che tu non desideri usare altrove \XHUGE (e te lo sconsiglio vivamente). Naturalmente devi usare font che ammettano ingrandimenti arbitrari.

            Ciao
            Enrico

            Questo codice va aggiunto o sostituito a quello precedente? Perché se lo sostituisco (e cambio i due HUGE in XHUGE in \makechapterhead), anche il titolo viene molto grande, e non è bello; se invece lo sostituisco e lascio HUGE nella riga

            `. . .
            \HUGE \bfseries #1\par\nobreak
            . . .`
            mi dice che HUGE non è definito.
            Se utilizzo entrambi e uso sia XHUGE

            `. . .
            \makebox[0pt][l]{\ \XHUGE\thechapter}
            . . .`
            che HUGE

            `. . .
            \HUGE \bfseries #1\par\nobreak
            . . .`
            va tutto bene.

            egreg9″ post=62222Naturalmente devi usare font che ammettano ingrandimenti arbitrari.

            Quali sono? Sto facendo delle prove con Utopia (pacchetto fourier).

            Ciao
            Orlando

          • #63284
            Up
            0
            Down
            ::

            ansys” post=62223

            [quote=”ansys” post=62218]Se volessi il numero leggermente più grande? Ritorno a \scalebox?

            Stai scherzando, vero?
            `\edef\@XHUGEsize{\ifcase\@ptsize{50}{0}\or{60}{0}\or{70}{0}\fi}
            \providecommand\XHUGE{\expandafter\fontsize\@XHUGEsize\selectfont}`
            Aggiusta i valori, ne ho messi a caso. Il secondo può benissimo essere 0, perché tanto il numero è composto in una \hbox e quindi l’avazamento di riga è irrilevante. A meno che tu non desideri usare altrove \XHUGE (e te lo sconsiglio vivamente). Naturalmente devi usare font che ammettano ingrandimenti arbitrari.

            Ciao
            Enrico

            Questo codice va aggiunto o sostituito a quello precedente? Perché se lo sostituisco (e cambio i vari HUGE in XHUGE in \makechapterhead), anche il titolo viene molto grande, e non è bello; se invece lo sostituisco e lascio HUGE nella riga

            `. . .
            \HUGE \bfseries #1\par\nobreak
            . . .`
            mi dice che HUGE non è definito.
            Se utilizzo entrambi e uso sia XHUGE

            `. . .
            \makebox[0pt][l]{\ \XHUGE\thechapter}
            . . .`
            che HUGE

            `. . .
            \HUGE \bfseries #1\par\nobreak
            . . .`
            va tutto bene.

            egreg9″ post=62222Naturalmente devi usare font che ammettano ingrandimenti arbitrari.

            Quali sono? Sto facendo delle prove con Utopia (pacchetto fourier).

            Ciao
            Orlando[/quote]
            \XHUGE va nella box che serve per stampare il numero di capitolo nel margine.

            Utopia va bene; non vanno bene i Computer Modern (European Modern, se usi la codifica T1) senza il pacchetto type1ec.

            Ciao
            Enrico

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

              egreg9″ post=62224\XHUGE va nella box che serve per stampare il numero di capitolo nel margine.

              Utopia va bene; non vanno bene i Computer Modern (European Modern, se usi la codifica T1) senza il pacchetto type1ec.

              Ciao
              Enrico

              Grazie mille. Per i font ora lascio Utopia, poi si vedrà.

              Grazie
              Orlando

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

          Go to top