Titolo fra barre orizzontali

  • Creatore
    Topic
  • #109454
    samiel
    Partecipante
      Up
      0
      Down
      ::


      Dovrei creare dei titoli racchiusi tra barre o linee orizzontali. Ho usato questo codice:
      `\documentclass[a4paper]{report}
      \usepackage[T1]{fontenc}
      \usepackage[utf8]{inputenc}
      \usepackage[italian]{babel}

      \makeatletter
      \renewcommand{\@makechapterhead}[1]{%
      \vspace*{50\p@}%
      {\parindent \z@ \raggedright \normalfont
      \hrule % horizontal rule
      \vspace{5pt}% % add vertical space
      \interlinepenalty\@M
      \MakeLowercase{ \large \scshape #1}\par % chapter title
      \vspace{8pt}% % add vertical space
      \hrule % horizontal rule
      \nobreak
      \vskip 40\p@ % add vertical space
      }%
      }
      \makeatother

      \begin{document}
      \chapter{Freud e l'arte}
      \end{document}`
      In realtà il testo non è centrato perché le misure sono approssimative, e se modifico il font
      tutta la collocazione salta. C’è modo per impostare le linee in modo che si regolino
      in funzione dell’altezza del testo “in automatico”?

      Grazie
      m

    Visualizzazione 15 filoni di risposte
    • Autore
      Risposte
      • #109455
        samiel
        Partecipante
          Up
          0
          Down
          ::


          Meglio così?
          `\makeatletter
          \renewcommand{\@makechapterhead}[1]{%
          \addvspace{\bigskipamount}
          {\parindent \z@ \raggedright \normalfont
          \hrule
          \addvspace{\medskipamount}
          \interlinepenalty\@M
          \MakeLowercase{ \large \scshape #1}\par
          \addvspace{\bigskipamount}
          \hrule
          \nobreak
          \addvspace{\bigskipamount}
          }%
          }
          \makeatother`

        • #109456
          Up
          0
          Down
          ::


          Non vuoi [tt]\scshape[/tt], credi a me.

          `
          \documentclass[a4paper]{report}
          \usepackage[T1]{fontenc}
          \usepackage[utf8]{inputenc}
          \usepackage[italian]{babel}

          \makeatletter
          \renewcommand{\@makechapterhead}[1]{%
          \vspace*{50\p@}%
          {\parindent \z@ \raggedright \normalfont
          \hrule % horizontal rule
          \vspace{5pt}% % add vertical space
          \interlinepenalty\@M
          \small\scshape\MakeUppercase{#1}\par % chapter title
          \vspace{5pt}% % add vertical space
          \hrule % horizontal rule
          \nobreak
          \vskip 40\p@ % add vertical space
          }%
          }
          \makeatother

          \begin{document}
          \chapter{Freud e l'arte}
          \end{document}
          `

          Ciao
          Enrico

        • #109457
          samiel
          Partecipante
            Up
            0
            Down
            ::


            Posso rinunciare al maiuscoletto, ma quel codice non centra il titolo tra i filetti:
            Il titolo è chiaramente spostato verso il basso. A parte il tipo di carattere,
            la centratura era esattamente il risultato che mi serve…
            https://postimg.org/image/w35ghkwlf/
            grazie
            m

          • #109458
            Up
            0
            Down
            ::


            Be’, io ottengo questo:

            [attachment=1838]ScreenShot2017-02-28at15.19.55.png[/attachment]

            Mi pare centrato.

            Ciao
            Enrico

            Attachments:
            You must be logged in to view attached files.
          • #109459
            Up
            0
            Down
            ::

            samiel” post=109643[…]
            In realtà il testo non è centrato perché le misure sono approssimative, e se modifico il font
            tutta la collocazione salta. C’è modo per impostare le linee in modo che si regolino
            in funzione dell’altezza del testo “in automatico”?
            […]

            Non ho capito bene cosa intendi.

            1. La distanza delle linee deve restare la stessa indipendentemente dall’altezza dei caratteri che compaiono nel titolo, oppure le linee devono essere più lontane fra loro quando il titolo contiene (anche) lettere alte e più vicine quando esso contiene solo lettere basse? Mi spiego meglio: supponiamo di non usare il maiuscoletto, ma il minuscolo alternato a qualche maiuscola; supponiamo di avere due titoli, «Corpo di Bacco!» e «mmm…» (il primo ha ascendenti e discendenti, il secondo no); supponiamo di comporli entrambi con lo stesso font alla stessa dimensione; la distanza fra le righe deve essere la stessa nei due titoli, o deve essere maggiore per il primo e minore per il secondo?
            2. Se la distanza fra le due righe deve restare la stessa, come va collocata la diversa quantità di spazio che di conseguenza deve restare vuoto? Più precisamente, quattro titoli come «Corpo di Bacco!» (ascendenti e discendenti), «Orsi bianchi, trichechi…» (solo ascendenti), «… e pinguini» (solo discendenti) e «mmm…» (né ascendenti, né discendenti) devono essere collocati in modo che la loro linea di base si trovi, in tutti e quattro, alla stessa distanza dai due filetti, o in modo diverso? E, in questo secondo caso, in quale modo?

            Ciao.


            Gustavo

          • #109460
            samiel
            Partecipante
              Up
              0
              Down
              ::


              Avevo usato in origine il maiuscoletto, ma anche il tutto maiuscolo va benissimo,
              proprio per avere la medesima altezza dei caratteri. Di conseguenza dovrebbe esserci
              lo stesso spazio sopra e sotto il titolo

              m

            • #109461
              Up
              0
              Down
              ::


              Però, in tal caso, non capisco cosa ci sia da regolare in automatico: se usi il maiuscoletto, o il tutto maiuscolo, i titoli non hanno sempre la stessa altezza, indipendentemente dalle parole che contengono? A parte casi particolari, s’intende, ma, in linea di massima, non dovrebbe essere così?

              Scusa, forse sono io che sono baùco e non capisco… 🙂

              Ciao.


              Gustavo

            • #109462
              samiel
              Partecipante
                Up
                0
                Down
                ::


                Sì certo. Al massimo su può variare la dimensione del font, come in
                ` \huge\scshape\MakeUppercase{#1}\par`

                m

              • #109463
                OldClaudio
                Partecipante
                  Up
                  0
                  Down
                  ::


                  Il testo del titolo forma una scatola che puoi visualizzare racchiudendolo nell’argomento del comando \frame; se ci sono ascendenti e/o discendenti la scatola cambia dimensioni, perché essa è larga quanto il titolo composto nel font scelto, è alta quanto il più alto dei caratteri che formano il titolo, ed è profonda quanto il più profondo dei caratteri che formao il titolo.

                  Con le sole lettere maiuscole o colo solo maiuscoletto minuscolo l’unica lettera che potrebbe discendere sotto la linea di base è la Q.

                  Ora i 5pt che inserisci sopra o sotto il titolo per distanziare i filetti, li distanziano da questa scatola ideale. è ovvio che l’effetto ottico può essere molto diverso a seconda della forma delle lettere che formano il titolo; questo effetto è sostanzialmente trascurabile, senz’altro trascurabile se manca la Q, quando si usano solo lettere maiuscole o solo le minuscole del maiuscoletto.

                  Probabilmente scrivendo in tondo senza usare solo le maiuscole, l’effetto dipendente da ascendenti e discendenti piò essere ridotto se invece di quei 2mm scarsi di distanza usi una spaziatura di una decina di millimetri.

                  Un altro modo per rendere la distanza abbastanza costante è quella di usare un pilastrino (\strut) all’inizio del titolo. Il pilastrino \strut definiti da LaTeX è un oggetto invisibile di larghezza nulla, di altezza pari a quello di una parentesi tonda e di profondità pari alla medesima parentesi. In questo modo la scatola ideale che racchiude il titolo viene ad avere l’altezza e la profondità costanti, indipendentemente dalla presenza di ascendenti e discendenti. una ulteriore spaziatura verticale dei due filetti li mantiene a distanza costante indipendentemente dalle lettere del titolo. Tuttavia scrivendo in maiuscolo e minuscolo resta uno spazio vuoto sopra le lettere minuscole senza ascendenti che fa apparire il filetto superiore più distante dal titolo di quanto appaia per il filetto inferiore, ma a questo non puoi porre rimedio se non aggiustando individualmente le distanze a seconda di quali lettere compongano il titolo: è un effetto ottico, non è una cosa misurabile. Se aumenti entrambe quelle distanza questo effetto ottico diminuisce molto, ma non sparisce.

                • #109464
                  Up
                  0
                  Down
                  ::


                  Va bene, senti, saprai tu quello che vuoi fare esattamente; quello che volevo dirti è solamente che non sei obbligato a usare caratteri maiuscoletti o maiuscoli al solo scopo di garantire che la distanza fra i filetti orizzontali da te inseriti non cambi quando cambiano le parole del titolo. Puoi usare, come ti ha suggertio @OldClaudio, i «puntelli» o «pilastrini», insomma il comando [tt]\strut[/tt]; solo ricordati che, in questo caso, devi usare tale comando sia all’inizio del titolo, sia alla fine, perché il titolo stesso potrebbe finire con l’occupare più di una riga. Oppure, puoi manipolare direttamente il parametro [tt]\prevdepth[/tt], soluzione che io preferisco perché riduce il numero di oggetti che vengono inclusi nell’output, dato che permette di omettere i puntelli. Inoltre, la soluzione con i puntelli non si preoccupa di assicurare che la posizione verticale della prima riga di testo nel capitolo sia indipendente dalla sua altezza, cosa che, invece, il codice seguente assicura.
                  `
                  \documentclass[a4paper]{report}
                  \usepackage[T1]{fontenc}
                  % \usepackage[utf8]{inputenc}
                  \usepackage[italian]{babel}

                  \makeatletter

                  % Non uso “\newlength” per evitare di allocare uno “'\skip' register”:
                  \@ifdefinable\@chap@title@rule@gap{\newdimen\@chap@title@rule@gap}
                  \renewcommand{\@makechapterhead}[1]{%
                  % Qui non considero la “\prevdepth”: assumo che un'interruzione di colonna
                  % preceda immediatamente.
                  \vspace*{50\p@}%
                  \begingroup
                  \setlength\parindent{\z@}%
                  \setlength\parskip{\z@skip}%
                  \raggedright \normalfont \large
                  \hrule
                  \setlength\prevdepth{\z@}%
                  \setlength\@chap@title@rule@gap{.1\baselineskip}% si adatta automaticamente
                  % all'interlinea in vigore;
                  % il coefficiente (qui,
                  % “.1”) determina
                  % l'apertura fra le due
                  % righe orizzontali
                  \nobreak \vspace{\@chap@title@rule@gap}%
                  \interlinepenalty\@M
                  \noindent #1\par % “\noindent” per precauzione contro un titolo vuoto
                  \addtolength\@chap@title@rule@gap{.5\baselineskip}% qui il coefficente “.5”
                  % va invece lasciato fisso
                  \addtolength\@chap@title@rule@gap{-\prevdepth}%
                  \nobreak \vspace{\@chap@title@rule@gap}%
                  \hrule
                  \nobreak \vskip 40\p@
                  \endgroup
                  \setlength\prevdepth{\z@}% pensiamo anche al testo che segue!
                  }

                  \makeatother

                  \begin{document}
                  Lascio una pagina vuota perch\'{e}, con \textsf{TeXShop}, riulsta pi\`{u}
                  facile fare paragoni fra la seconda e la terza pagina.
                  \newpage

                  \chapter{Freud e l'arte preraffealita}
                  Questo capitolo esplora i legami tra psicanalisi e produzioni artistiche.

                  \chapter{…}
                  Titolo di minuscola altezza e profondit\`{a} nulla.
                  \end{document}
                  `

                  Ciao.


                  Gustavo

                • #109465
                  samiel
                  Partecipante
                    Up
                    0
                    Down
                    ::


                    Appena ho una mezz’ora vedo se riesco a costruire la soluzione prevista da OldClaudio,
                    ovvero ricorrendo a \strut.
                    Riguardo alla soluzione, per me inarrivabile, proposta la letteracdp, quali vantaggi effettivi presente
                    rispeto al semplice codice che avevo postato nel secondo messaggio?

                    grazie
                    m

                  • #109466
                    Up
                    0
                    Down
                    ::

                    samiel” post=109894[…]
                    Riguardo alla soluzione, per me inarrivabile, proposta la letteracdp, quali vantaggi effettivi presente
                    rispeto al semplice codice che avevo postato nel secondo messaggio?
                    […]

                    Credevo di averlo spiegato, ma lo ripeto volentieri.

                    1. Permette di usare liberamente il carattere che si vuole, senza essere vincolati a comporre il titolo tutto in maiuscolo o maiuscoletto.
                    2. D’altra parte, anche limitarsi a usare solo lettere maiuscole o maiuscolette non garantisce affatto che la spaziatura tra i filetti orizzontali non vari al variare dei caratteri che compaiono nel titolo. Questo perché:
                      1. non è affatto vero che tutte le lettere maisucole e maiuscolette hanno le stesse dimensioni verticali: per esempio, nel font [tt]cmcsc10[/tt], la [tt]Q[/tt] (maiuscola) ha una profondità di 1.94445pt, la [tt]q[/tt] (maisucoletta) ha una profondità di 1.44444pt, mentre tutte le altre lettere hanno profondità nulla (è, peraltro, vero che tutte le lettere maisucole hanno la stessa altezza, precisamente 6.83332pt, e che, similmente, tutte le maisucolette sono alte 5.13888pt);

                      2. ma, soprattutto, caratteri di punteggiatura come virgola, punto e virgola, parentesi e barra hanno dimensioni verticali che possono differire anche di molto da quelle delle lettere; in particolare, aggiungere a un titolo una barra o delle parentesi tonde o quadre equivale, di fatto, ad aggiungere uno [tt]\strut[/tt].

                      [/li]

                    3. Il mio codice inserisce degli spazi tra i filetti che sono funzione dello scartamento (volgarmente detto interlinea) con cui il titolo è composto, il quale è a sua volta funzione delle dimensioni del carattere in uso ([tt]\small[/tt], [tt]\large[/tt], [tt]\huge[/tt]…). Non si commetta l’errore di credere che anche [tt]\medskipamount[/tt] e compagni siano sempre “sincronizzati” con le dimensioni del carattere: con le classi di documento standard, infatti, ciò non avviene per niente (la situazione può essere diversa con altre classi).
                    4. [/ol]

                      Ciao.


                      Gustavo

                • #109467
                  samiel
                  Partecipante
                    Up
                    0
                    Down
                    ::


                    Codice raffinatissimo!
                    Ultimissima cosa: volendo che il titolo risulti in ogni caso tutto in maiuscolo,
                    dove devo mettere un \MakeUppercase?

                    grazie mille
                    m

                  • #109468
                    Up
                    0
                    Down
                    ::

                    samiel” post=109910[…]
                    Ultimissima cosa: volendo che il titolo risulti in ogni caso tutto in maiuscolo,
                    dove devo mettere un \MakeUppercase?
                    […]

                    Là dove avevo scritto`\noindent #1\par`scrivi invece `\noindent\MakeUppercase{#1}\par`

                    Approfitto per correggere un errore in quel che ho scritto nel messaggio precedente: non è affatto vero che uno [tt]\strut[/tt] ha le stesse dimensioni verticali di una parentesi! Mi stavo confondendo con [tt]\mathstrut[/tt]. Per esempio, con uno scartamento (interlinea) di 12pt, uno [tt]\strut[/tt] ha, nelle impostazioni usuali, altezza pari a 8.5pt e profondità pari a 3.5pt (notare che 8.5pt + 3.5pt = 12pt, come deve risultare); invece, per esempio, nei font Computer Modern a 10pt, i quali sono disegnati per essere usati, appunto, con uno scartamento di 12pt, le parentesi hanno un’altezza di 7.5pt e una profondità di 2.5pt, per un’altezza totale di 10pt. As ogni modo, resta vero che parentesi e barre sono molto più alte e profonde delle lettere maiuscolette.

                    Ciao.


                    Gustavo

                  • #109469
                    samiel
                    Partecipante
                      Up
                      0
                      Down
                      ::


                      Perfetto, grazie!

                      m

                    • #109470
                      samiel
                      Partecipante
                        Up
                        0
                        Down
                        ::


                        Pereftto, grazie!

                        m

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

                        Go to top