[RISOLTO] mettere una linea verticale davanti a due righe

  • Creatore
    Topic
  • #115065
    Up
    0
    Down
    ::


    ciao a tutti
    dopo un po’ di anni mi sono rimesso a usare latex
    sto scrivendo un canzoniere

    ho un ritornello da 4 righe, le ultime due si devono cantare 2 volte
    per far capire che si devono ripetere solo le ultime due righe, vorrei scrivere così:

    prima riga
    seconda riga
    | terza riga, che rientra un po’ e con una linea verticale che occupa la terza e la
    | quarta riga (x2)

    avevo provato con un \rule ma il risultato è stato tipo:

    prima riga
    seconda riga
    terza riga
    |
    | quarta riga (x2)

    avete suggerimenti?

Visualizzazione 17 filoni di risposte
  • Autore
    Risposte
    • #115066
      OldClaudio
      Partecipante
        Up
        0
        Down
        ::


        Se ti va bene il \rule, il primo devi indicarlo PRIMA della terza riga, qualcosa come`prima riga\\
        seconda riga\\
        \rule{…}{…} terza riga\\
        \rule{…}{…} quarta riga (X 2)`Ci sono anche altri modi, volendo anche epr avere una sola riga verticale che abbracci le due ultime righe. MA lè bisogna giocare con comandi più o meno “primitivi” di TeX.

      • #115067
        Up
        0
        Down
        ::


        in effetti… potevo arrivarci anche da solo

        grazie

      • #115068
        Up
        0
        Down
        ::


        avevo già messo il RISOLTO al topic, ma in realtà la soluzione con i due \rule non funziona bene

        questo perchè non riesco a fare in modo che le due linee generate da \rule si tocchino in modo da sembrare una linea unica (ho giocato sulle varie altezze e su un sollevamento negativo del \rule della riga superiore, ma resta sempre uno spazio bianco tra le due linee)

      • #115069
        Up
        0
        Down
        ::


        In generale: posso disegnare una linea in una posizione generica della pagina senza creare una figura, e senza spostare il testo sottostante? con pstricks o qualche altro comando che crea solo la linea e niente di più?

      • #115070
        OldClaudio
        Partecipante
          Up
          0
          Down
          ::


          Devi nascondere l’altezzad el rule, per esempio con \smash. Forse c’è scritto qualcosa su questo \smash nella guida Il LaTeX Reference Manual commentato nella sezione Documentazione di questo forum. Io uso spesso smash, che non ricordo più se l’ho inseriro anche nella guida.

          Incidentalmente sai che puoi usare la versione di \makebox creata per l’ambiente picture, anche fuori dell’ambiente picture. Nel tuo caso un semplice \makebox(0,0){\rule{…}{…}} si comporta come \smash{\rule{…}{…}}. inoltre probabilmente ti conviien usare anche l’argomento facoltativo per ribassare il rule sottola linea di base, qualcosa come \rule[-1ex]{0.4pt}{3.25ex} potrebbe andare bene. Aggiusta tu i valori numerici.

        • #115071
          Up
          0
          Down
          ::


          fatta!

          ho usato \makebox

          grazie

        • #115072
          OldClaudio
          Partecipante
            Up
            0
            Down
            ::


            Bene. Per righe consecutive da marcare puoi usare un solo rule nella prima riga e giocare sull’altezza e sulla profondità per scendere più in basso, così con un solo \rule le marchi tutte. Usa la lunghezza \baselineskip invece di ex

          • #115073
            Up
            0
            Down
            ::


            grazie
            sì sto facendo con un solo rule

            sì dovevo andare a cercare come si chiamava il comando che dà l’altezza della riga… a volte la pigrizia fa brutti scherzi

            ciao e grazie

            diego

          • #115074
            OldClaudio
            Partecipante
              Up
              0
              Down
              ::


              Visto il tuo messaggio ho pensato di aggiornare la guida tematica {l LaTeX Reference Manual commentato con una figura e qualche riga di testo, dove si spiega, spero bene, che cosa siano e come si chiamino le varie parti degli elementi che compongono le righe di testo. Puoi scrivare la nuova versione e cercare la figura 1.1. Vicino alla figura non si parla di come si determinimo certe grandezze, ma più avanti, cerca nell’indice analitico, si parla si \settoheight, \setto depth e \settowidth, che sono molto utili per comporre macro particolari o per fare cose del tipo di quella che stai facendo tu.

            • #115075
              Up
              0
              Down
              ::


              alla pag 20 al posto di

              \baselineskip

              c’è scritto

              \basleslineskip

            • #115076
              Up
              0
              Down
              ::


              stavo usando un comando del tipo:

              \makebox(0,0){\rule[3ex]{1.2pt}{4ex}}

              provo a cambiare il “4ex” con una misura in funzione dell’altezza della riga

              ho provato a fare questo:

              \setlength{\spaziouno}{\baselineskip-\lineskip}

              ho messo questo comando in un file .cls che sto usando per una classe canzoniere

              compilo e non ho nessun problema.

              adesso voglio usare la lunghezza creata e aggiungo nel file .tex:

              \makebox(0,0){\rule[3ex]{1.2pt}{\spaziouno}}

              ma mi dà 3 errori:

              Undefined control sequence…
              Missing number, treated as zero…
              Illegal unit of measure (pt inserted) …

            • #115077
              OldClaudio
              Partecipante
                Up
                0
                Down
                ::

                diegotex” post=115489alla pag 20 al posto di

                \baselineskip

                c’è scritto

                \basleslineskip

                Grazie; sfuggono sempre dei refusi. Provvedo.

              • #115078
                OldClaudio
                Partecipante
                  Up
                  0
                  Down
                  ::

                  diegotex” post=115490stavo usando un comando del tipo:

                  \makebox(0,0){\rule[3ex]{1.2pt}{4ex}}

                  provo a cambiare il “4ex” con una misura in funzione dell’altezza della riga

                  ho provato a fare questo:

                  \setlength{\spaziouno}{\baselineskip-\lineskip}

                  ho messo questo comando in un file .cls che sto usando per una classe canzoniere

                  compilo e non ho nessun problema.

                  adesso voglio usare la lunghezza creata e aggiungo nel file .tex:

                  \makebox(0,0){\rule[3ex]{1.2pt}{\spaziouno}}

                  ma mi dà 3 errori:

                  Undefined control sequence…
                  Missing number, treated as zero…
                  Illegal unit of measure (pt inserted) …

                  Naturalmente hai deifnito \spaziouno come nuova grandezza e hai usato il pacchetto calc per eseguire operazioni sui valori dei registri, non è vero?
                  Se non l’hai fatto, ehm, ti mancano ancora nozioni importanti.

                  Intanto \nelength{\spaziouno} vi vuole, altrimenti \spaziouno diventa na macro qualsiasi e non viene definita da \setlength, ma usata impropriamente come se fosse na lunghezza senza esserlo per davvero.

                  Il pacchetto calc permette di fare certi calcoli sulle grandezze di vario genere da numeri interi a operazioni sulle lunghezze, ma richiede una specifica sintassi.

                  Invece i vari motori di composizione possono fare calcoli molto bene fatti, purché siano preceduti da \numexpr o \dimexpr e conclusi con qualcosa che non ha senso in una expression, non sapendo che cosa non abbia senso, o avendo dei dubbi basta usare \relax, comando del tutto innocuo che non fa assolutamante nulla, ma è pur sempre un comando.

                  Quindi dopo aver definito \spaziouno come lunghezza, io scriverei `\setlength{\spaziouno}{\dimexpr \baselineskip-\lineskip\relax}`anche se in questo particolare caso \relax è superfluo.

                  Il vantaggio di usare calc è che forse ci sono meno problemi di sintassi, ma i calcoli sono svolti in modo complesso. Invece con i comandi nativi \dimexpr e \numexpr i calcoli sono fatti in modo più ruspante, ma sono eseguiti nel processore che sta elabornado il file, quindi in modo praticamente istantaneo, senza sfruttare la memoria allocata per la compilazione e senza continuamente elaborare i dati per aggiungergli unità di misura per poi toglierle e facendo perciò lavorare l’interprete su stringe alfanumeriche come fa calc. Per l’utente finale forse calc è più facile da usare, ma io preferisco sempre i comandi nativi.

                  Ne paro anche nella guida che ti ho indicato. Quando Lamport ha scritto la seconda edizione els suo manuale di LaTeX nel 1994, i ocmandi nativi che ti ho descritto non esistevano ancora; sono stati introdotti circe 15 anni dopo. Ora,poi, con la sintassi L3 si possono fare anche calcoli in floating point, anche se in un caso semplice come iltuo non occorre ricorrere a questi grandi mezzi.

                • #115079
                  Up
                  0
                  Down
                  ::


                  ok
                  fatta

                  sempre a pag 20 c’é anche un

                  \enalgethispage

                • #115080
                  OldClaudio
                  Partecipante
                    Up
                    0
                    Down
                    ::


                    Nella pagina 20 non c’erano solo i due errori che hai segnalato e delle cui segnalazioni ti ringrazio moltissimo; rileggendo ciò che ho scritto questa notte, evidentemente obnubilato dalla stanchezza della giornata era pieno di altri errori. Eppure il mio eitor mi marca gli errori ortografici con una bella riga rossa.
                    Forse domattina ci sarà la versione spero con meno errori. 🙁

                    Grazie ancora

                  • #115081
                    mattiaca
                    Partecipante
                      Up
                      0
                      Down
                      ::

                      diegotex” post=115460ciao a tutti
                      dopo un po’ di anni mi sono rimesso a usare latex
                      sto scrivendo un canzoniere

                      ho un ritornello da 4 righe, le ultime due si devono cantare 2 volte
                      per far capire che si devono ripetere solo le ultime due righe, vorrei scrivere così:

                      prima riga
                      seconda riga
                      | terza riga, che rientra un po’ e con una linea verticale che occupa la terza e la
                      | quarta riga (x2)

                      avevo provato con un \rule ma il risultato è stato tipo:

                      prima riga
                      seconda riga
                      terza riga
                      |
                      | quarta riga (x2)

                      avete suggerimenti?

                      Forse è un consiglio stupido, ma secondo me la soluzione più semplice e banale è quella di mettere il testo del ritornello in un ambiente tabella come tabular.

                      `
                      \begin{tabular}{|l}
                      Ritornello\\
                      Ritornello\\
                      \end{tabular}
                      `

                    • #115082
                      mattiaca
                      Partecipante
                        Up
                        0
                        Down
                        ::

                        diegotex” post=115460ciao a tutti
                        dopo un po’ di anni mi sono rimesso a usare latex
                        sto scrivendo un canzoniere

                        ho un ritornello da 4 righe, le ultime due si devono cantare 2 volte
                        per far capire che si devono ripetere solo le ultime due righe, vorrei scrivere così:

                        prima riga
                        seconda riga
                        | terza riga, che rientra un po’ e con una linea verticale che occupa la terza e la
                        | quarta riga (x2)

                        avevo provato con un \rule ma il risultato è stato tipo:

                        prima riga
                        seconda riga
                        terza riga
                        |
                        | quarta riga (x2)

                        avete suggerimenti?

                        Ho letto la discussione, però io utilizzerei un approccio diverso, forse più facile e banale per chi si trova alle prime armi: inserirei le righe del ritornello in un ambiente che crea una tabella, del tipo:
                        `
                        \begin{tebular}{|l}
                        ritornello \\
                        ritornello \\
                        \end{tabular}
                        `

                        Per il rientro puoi inserire manualmente dello spazio orizzontale.

                      • #115083
                        OldClaudio
                        Partecipante
                          Up
                          0
                          Down
                          ::


                          Si, anche questa è una buona soluzione, ma se vuoi regolare il rientro o agisci a mano in ogni riga o nell’ambiente tabular devi usare una @-espressione.
                          Oppure definisci un nuovo ambiente; oppure usi la barra verticale scrivendo una macro con uno o più argomenti facoltativi, oppure…
                          Come ho dotto ci sono molti modi per risolvere il problema.

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

                      Go to top