Produrre linea sotto il titolo

  • Creatore
    Topic
  • #93592
    robitex
    Amministratore del forum
      Up
      0
      Down
      ::


      Ciao a tutti.
      Desidererei inserire al di sotto di un testo che rappresenta un titolo una linea della stessa larghezza del testo.
      Una specie di sottolineatura.
      Il comando, per esempio \mytitle, potrebbe accettare come argomento il testo da sottolineare regolando la distanza tra il testo e la linea, e lo spessore della linea.

      Che codice proporreste?
      Grazie.
      R.

    Visualizzazione 10 filoni di risposte
    • Autore
      Risposte
      • #93593
        samiel
        Partecipante
          Up
          0
          Down
          ::


          comando \undeline
          pacchetto soul
          pacchetto ulem
          o cercavi qualcosa di più complesso?

          m

        • #93594
          franen
          Partecipante
            Up
            0
            Down
            ::


            `\documentclass[]{article}
            \usepackage{xcoffins}
            \usepackage{lipsum}

            \ExplSyntaxOn
            \NewCoffin\Roby_Text_Coffin
            \NewCoffin\Roby_Line_Coffin
            \tl_new:N \l_roby_text_tl

            \NewDocumentCommand {\RobyUnderline}{O{0em}O{0.4pt}m}{
            \tl_set:Nn \l_roby_text_tl {#3}
            \SetHorizontalCoffin\Roby_Text_Coffin{
            \l_roby_text_tl
            }
            \SetHorizontalCoffin\Roby_Line_Coffin{
            \rule{\CoffinWidth\Roby_Text_Coffin}{#2}
            }
            \JoinCoffins\Roby_Line_Coffin[l,t]\Roby_Text_Coffin[l,b] (0pt,#1)
            \TypesetCoffin\Roby_Line_Coffin\par
            }
            \ExplSyntaxOff
            \begin{document}
            \RobyUnderline[2pt][6pt]{\Huge ciao}
            \lipsum

            \end{document}`
            Non credo mi complicherei così la vita, ma è tanto per ricordare che esistono i coffins! 🙂
            Il primo argomento opzionale regola la distanza verticale fra testo e linea, il secondo regola lo spessore della linea.

            Fran

            EDIT: se volessi che la distanza fra linea e testo fosse sempre misurata a partire dalla linea di base, bisognerebbe fare un calcolo usando \CoffinDepth:` \JoinCoffins\Roby_Line_Coffin[l,t]\Roby_Text_Coffin[l,b] (0pt,-\CoffinDepth\Roby_Text_Coffin + #1)`

          • #93595
            Up
            0
            Down
            ::


            [tt]tikzmark[/tt]: `
            \documentclass{article}
            \usepackage{tikz}
            \usetikzlibrary{shadings,tikzmark}

            \newcommand{\tikzunderline}[3][]{%
            \tikz[remember picture, overlay]{\draw[#1](pic cs:#2)–(pic cs:#3);}
            }

            \begin{document}

            \tikzmark{a}\Huge testo\tikzmark{b}\tikzunderline{a}{b}

            \tikzmark{c}\Huge testo\tikzmark{d}\tikzunderline[yshift=-3pt]{c}{d}

            \tikzmark{e}\Huge testo\tikzmark{f}\tikzunderline[yshift=-1pt, shorten <=5pt,shorten >=5pt]{e}{f}

            \tikzmark{g}\Huge testo\tikzmark{h}\tikzunderline[yshift=-4pt, shorten <=-5pt,shorten >=-5pt, ultra thick]{g}{h}
            \end{document}
            ` Ciao
            Claudio

          • #93596
            robitex
            Amministratore del forum
              Up
              0
              Down
              ::



              @samiel

              mi interessava un comando …


              @claudio

              ottimo ma sono un po’ contrario all’uso dell’overlay perché richiede due compilazioni …


              @franen

              naturalmente le soluzioni più complicate mi piacciono 😀
              Ho notato che non servirebbe definire un registro token dove memorizzare il testo, esiste un buon motivo per farlo?
              Dove hai imparato questa libreria L3?
              Qual è il pricipio di funzinamento?
              Perché non scrivi un articolo per ArsTeXnica sull’argomento?
              Grazie a tutti.
              R.

            • #93597
              franen
              Partecipante
                Up
                0
                Down
                ::

                robitex” post=93212 @franen
                Ho notato che non servirebbe definire un registro token dove memorizzare il testo, esiste un buon motivo per farlo?
                Dove hai imparato questa libreria L3?
                Qual è il pricipio di funzinamento?
                Perché non scrivi un articolo per ArsTeXnica sull’argomento?
                Grazie a tutti.
                R.

                No, non c’è un buon motivo, è che ho riadattato questo comando da uno che avevo scritto tempo addietro e lì serviva creare la tl.
                Ho usato questa libreria una sola volta in vita mia in uno degli esempi di uso del mio pacchetto per libretti di matrimonio.
                Da quel che ho capito è utile per creare tante scatoline in cui metti quel che vuoi e che poi allinei e accoppi a tuo piacimento.
                Per l’articolo intanto passo… (svelando un segreto ti dico che ne ho iniziato uno su xindy da quasi un anno ma non riesco a trovare la voglia di andare avanti 🙁 )

                Fran

              • #93598
                OldClaudio
                Partecipante
                  Up
                  0
                  Down
                  ::


                  Fran, cerca di fartela tornare; credo che pochi sappiano usare xindy; io ci ho provato, ma dopo aver risolto il problema che avevo per mano, non l’ho più usato e mi sono dimenticato tutto quello che ero riuscito a decifrare della sua terribile non-documentazione.

                  Claudio

                • #93599
                  Up
                  0
                  Down
                  ::

                  robitex” post=93212 @claudio
                  ottimo ma sono un po’ contrario all’uso dell’overlay perché richiede due compilazioni …

                  Hai perfettamente ragione, quello è il problema principale. Ma, usando arara o altri tool, basta definire un passaggio in più ed è fatta.

                  Ciao
                  Claudio

                • #93600
                  robitex
                  Amministratore del forum
                    Up
                    0
                    Down
                    ::

                    cfiandra” post=93222

                    @claudio
                    ottimo ma sono un po’ contrario all’uso dell’overlay perché richiede due compilazioni …

                    Hai perfettamente ragione, quello è il problema principale. Ma, usando arara o altri tool, basta definire un passaggio in più ed è fatta.

                    Ciao
                    Claudio

                    Purtroppo arara dipende da Java che va benissimo per certi compiti ma credo meno per altri come questo, e poi sono molto pigro.
                    Perché non utilizzare texlua che viene installato di default per compiere queste elaborazioni?
                    R.

                  • #93601
                    OldClaudio
                    Partecipante
                      Up
                      0
                      Down
                      ::


                      Senza andare a cercare chissà che cosa, linguaggi strani o poco conosciuti, che ne diresti di questo singolo comando per \mytitle?`% !TEX encoding = UTF-8 Unicode
                      % !TEX TS-program = pdflatex

                      \documentclass[12pt]{article}
                      \usepackage[utf8]{inputenc}
                      \usepackage[T1]{fontenc}
                      \usepackage{lmodern}

                      \newbox\mytitlebox

                      \newcommand{\mytitle}[3]{%
                      % argomenti: #1 titolo
                      % #2 distanza sottolineatura
                      % # spessore sottolineatura
                      \begin{lrbox}{\mytitlebox}#1\end{lrbox}%
                      \leavevmode\vtop{\copy\mytitlebox\vskip \dimexpr#2-\dp\mytitlebox\relax\hrule height #3}
                      }

                      \begin{document}

                      \centering\mytitle{\Huge Questo è il mio titolo}{2ex}{1mm}
                      \end{document}`
                      Nota che la sottolineatura è ad distanza specificata dalla baseline. Magari ci vorrebbe qualche cosina di meglio per parametrizzare la distanza versicale al corpo del testo del titolo, ma questo funziona con comandi parzialmente LaTeX (per esempio ambiente lrbox, e per il resto comandi nativi di TeX.

                    • #93602
                      robitex
                      Amministratore del forum
                        Up
                        0
                        Down
                        ::


                        Claudio, che potenza!
                        R.

                      • #93603
                        robitex
                        Amministratore del forum
                          Up
                          0
                          Down
                          ::


                          Ho giocato un po’ con il pacchetto xcoffins.
                          Aggiungo che i comandi possono essere usati direttamente nel documento senza bisogno dell’ambiente di programmazione L3.
                          Ecco un esempio sempre per sottolineare un titolo:
                          `\documentclass{article}
                          \usepackage{xcoffins}
                          \begin{document}

                          \NewCoffin\titletext
                          \NewCoffin\titleline

                          \SetHorizontalCoffin\titletext{\Large Titolo unico}
                          \SetHorizontalCoffin\titleline{%
                          \rule{\CoffinWidth\titletext}{0.2pt}%
                          }
                          \JoinCoffins
                          \titletext\titleline

                          \TypesetCoffin\titletext

                          \end{document}`
                          Diversamente da franen, il join prevede che ia il titolo ad essere il padre e la linea il figlio ($ texdoc xcoffins per leggere la documentazione L3).

                          Per fare in modo che la linea tocchi sempre la base dei caratteri, basta aggiungere tra parentesi tonde al join una distanza:
                          `\documentclass{article}
                          \usepackage{xcoffins}
                          \begin{document}

                          \NewCoffin\titletext
                          \NewCoffin\titleline

                          \SetHorizontalCoffin\titletext{\Large Titolo game con discendenti}
                          \SetHorizontalCoffin\titleline{%
                          \rule{\CoffinWidth\titletext}{0.2pt}%
                          }
                          \JoinCoffins
                          \titletext\titleline
                          (0pt, -\CoffinDepth\titletext)
                          \TypesetCoffin\titletext

                          \end{document}`

                          Con gli argomenti opzionali tra parentesi quadre del join invece, regoliamo i punti di unione.
                          Per esempio per sovrapporre una linea nel centro del testo usiamo specificare le chiavi che corrispondono agli allineamenti:
                          `\documentclass{article}
                          \usepackage{xcoffins}
                          \begin{document}

                          \NewCoffin\titletext
                          \NewCoffin\titleline

                          \SetHorizontalCoffin\titletext{\Large Titolo game con discendenti}
                          \SetHorizontalCoffin\titleline{%
                          \rule{\CoffinWidth\titletext}{0.2pt}%
                          }
                          \JoinCoffins
                          \titletext[vc,hc]\titleline[vc,hc]

                          % una prima composizione
                          \TypesetCoffin\titletext

                          \end{document}`
                          Possiamo anche fare il join più di una volta. Per comporre il titolo con due linee, una alla base ed una in sommità, basta scrivere:
                          `\JoinCoffins
                          \titletext[hc,H]\titleline[hc,vc]
                          \JoinCoffins
                          \titletext[hc,t]\titleline[hc,vc]`

                          Cosa succede se ridefiniamo il coffin? Semplice, la ridefinizione è totale perciò si perde il join con la linea.
                          `\documentclass{article}
                          \usepackage{xcoffins}
                          \begin{document}

                          \NewCoffin\titletext
                          \NewCoffin\titleline

                          \SetHorizontalCoffin\titletext{\Large Titolo game con discendenti}
                          \SetHorizontalCoffin\titleline{%
                          \rule{\CoffinWidth\titletext}{0.2pt}%
                          }
                          \JoinCoffins
                          \titletext\titleline
                          (0pt, -\CoffinDepth\titletext)

                          % una prima composizione
                          \TypesetCoffin\titletext

                          % una seconda ma non cambia niente
                          \TypesetCoffin\titletext

                          % ridefiniamo il primo coffin
                          \SetHorizontalCoffin\titletext{\Large Game is over}

                          % ricomponiamo
                          \TypesetCoffin\titletext

                          \end{document}`

                          Interessante per risolvere semplicemente alcuni problemi…
                          e come sempre L3 si dimostra assai potente…
                          Alla prossima.
                          R.

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

                      Go to top