Per ossessivi: punti ellittici, \dots, ellipsis

  • Creatore
    Topic
  • #24979
    lorenzo.pantieri
    Partecipante
      Up
      0
      Down
      ::


      Ciao a tutti, questa è proprio una finezza da ossessivi. Quale delle seguenti possibilità è la migliore?
      `Tizio, Caio, \dots sono nomi fittizi.

      Tizio, Caio, \dots{} sono nomi fittizi.

      Tizio, Caio, \dots\unkern{} sono nomi fittizi.`
      E in questo caso, invece?
      `Parlammo di Tizio, Caio, \dots Poi cambiammo discorso.

      Parlammo di Tizio, Caio, \dots{} Poi cambiammo discorso.

      Parlammo di Tizio, Caio, \dots\unkern{} Poi cambiammo discorso.`
      E in questo?
      `Parlammo molto (di Tizio, Caio, \dots). Poi cambiammo discorso.

      Parlammo molto (di Tizio, Caio, \dots\unkern). Poi cambiammo discorso.
      `
      In tutti questi casi, penso che il risultato migliore si ottenga con l’ultima riga.

      Che ne dite?

      Ammesso (ma non concesso) che quella sia la soluzione migliore, resta il fatto che quel
      `\dots\unkern{}`
      e quel
      `\dots\unkern`
      da scrivere sono molto scomodi. Il pacchetto ellipsis sarebbe quello che ci vuole, se non che… come emerso in una precedente discussione, questo pacchetto confligge con amsmath, che ridefinisce \dots in modo da renderlo sensibile al contesto: con amsmath,
      `$a_1+\dots+a_n$`
      dà punti ellittici diversi da
      `$a_1, dots, $a_n$`

      Se la pensate come me (cioè che la spaziatura predefinita di LaTeX attorno ai punti ellittici sia insoddisfacente), potrei scrivere all’autore del pacchetto per renderlo compatibile con amsmath.

      Che ne dite?

      L.

    Visualizzazione 10 filoni di risposte
    • Autore
      Risposte
      • #24980
        lorenzo.pantieri
        Partecipante
          Up
          0
          Down
          ::


          Ecco, mi è venuta in mente una (mezza) idea. Si potrebbe dire a LaTeX, “quando sei in modo matematico, usa la definizione di \dots data da amsmath, mentre quando sei in modalità testuale, usa quella data da ellipsis”?

          Si tratta di una costruzione fattibile?

          (Ho spulciato il codice di amsmath.sty: la definizione di \dots è davvero impressionante…)

          Grazie mille,
          L.P.

        • #24981
          Up
          0
          Down
          ::

          Ecco, mi è venuta in mente una (mezza) idea. Si potrebbe dire a LaTeX, “quando sei in modo matematico, usa la definizione di \dots data da amsmath, mentre quando sei in modalità testuale, usa quella data da ellipsis”?

          Si tratta di una costruzione fattibile?

          (Ho spulciato il codice di amsmath.sty: la definizione di \dots è davvero impressionante…)

          Grazie mille,
          L.P.

          Bhè… credo che si potrebbe fare una cosa del genere:
          `
          \usepackage{ellipsis}
          \makeatletter
          \let\ellipsis@dots\dots
          \makeatother
          \usepackage{amsmath}
          \makeatletter
          \let\ams@math@dots\dots
          \renewcommand\dots{\ifmmode \expandafter\ams@math@dots\else \expandafter\ellipsis@dots\fi}
          \makeatother
          `

          (Credo) che dovrebbe andare, anche se sei vincolato a inserire questo codice tra il caricamento di ellipsis e quello di amsmath. (Spero di non aver detto tante castronerie! :d)

          Ciao, Daniele.

        • #24982
          lorenzo.pantieri
          Partecipante
            Up
            0
            Down
            ::


            Ho provato, ma non funziona.
            `\documentclass{article}

            \usepackage{ellipsis}

            \makeatletter
            \let\ellipsis@dots\dots
            \makeatother

            \usepackage{amsmath}

            \makeatletter
            \let\ams@math@dots\dots
            \renewcommand\dots{\ifmmode \expandafter\ams@math@dots\else \expandafter\ellipsis@dots\fi}
            \makeatother

            \begin{document}
            $a+\dots+b$ $a,b,\dots$
            \end{document}`
            Come vedi, i punti ellittici in modo matematico non sono sensibili al contesto.

            In effetti, la convivenza tra i due pacchetti (così come sono) mi pare ardua, visto che danno due definizioni diverse (e verosimilmente incompatibili) dello stesso comando (\dots).

            Un vero peccato, perché la spaziatura predefinita di LaTeX attorno ai punti ellittici è insoddisfacente, si tratta di un (piccolo, ma fastidioso) bug: questo lo spiega -in modo che trovo assolutamente convincente- la brevissima documentazione di ellipsis. (Fra l’altro, al pacchetto ellipsis ha contribuito addirittura Frank Mittelbach.)

            Ho scritto all’autore di ellipsis evidenziandogli il problema, vi terrò aggiornati se ci saranno sviluppi.

            Vediamo se qualcuno sul forum ha qualche idea. Credo che si tratti in problemino intrigante, un esercizio di programmazione che se risolto bene può dare soddisfazioni…

            Buona domenica,
            L.

            P.S. In mancanza, di meglio mi rassegnerò a usare tutti quegli `\unkern`
            😐

          • #24983
            Up
            0
            Down
            ::

            Ho provato, ma non funziona.

            Hai perfettamente ragione… credo che il punto sia che \dots viene denfinito con \DeclareRobustCommand, quindi è protetto… mi dispiace, ci tocca aspettare qualcuno di più preparato.

            Ciao, Daniele.

          • #24984
            Up
            0
            Down
            ::


            mi permetto un suggerimento: e provare con un:

            `\newcommand{\Dots}{\dots\unkern{ }}`

            No? Oppure è una pratica sconsigliata usare questi newcommand? Tra l’altro, qual è la differenza tra \dots e \ldots?

          • #24985
            Up
            0
            Down
            ::

            Ecco, mi è venuta in mente una (mezza) idea. Si potrebbe dire a LaTeX, “quando sei in modo matematico, usa la definizione di \dots data da amsmath, mentre quando sei in modalità testuale, usa quella data da ellipsis”?

            Si tratta di una costruzione fattibile?

            (Ho spulciato il codice di amsmath.sty: la definizione di \dots è davvero impressionante…)

            È esattamente quello che succede: la definizione di \dots data da amsmath è
            `\DeclareRobustCommand{\dots}{%
            \ifmmode \expandafter\mdots@\else \expandafter\textellipsis \fi
            }`
            che quindi in modo testo usa la ridefinizione di \textellipsis data dal pacchetto ellipsis. L’unico problema è che il pacchetto ellipsis pospone la ridefinizione di \dots in \AtBeginDocument. Soluzione
            `\usepackage{ellipsis}
            \usepackage{amsmath}
            \makeatletter
            \@xp\let\csname ams@dots\@xp\endcsname\csname dots \endcsname
            \AtBeginDocument{\@xp\def\csname dots \@xp\endcsname\@xp{\ams@dots}}
            \makeatother`
            Spiegazione: \dots è definito da entrambi i pacchetti con \DeclareRobustCommand, quindi il vero comando da ridefinire è “\dots ” con lo spazio! Quindi definisco \ams@dots come “\dots ” ridefinito da amsmath; poi dico che al \begin{document} venga ridefinito “\dots ” come l’espansione di primo livello di \ams@dots.

            Facile, no?

            Naturalmente sarebbe più semplice scrivere
            `\usepackage{ellipsis}
            \usepackage{amsmath}
            \makeatletter
            \DeclareRobustCommand{\dots}{%
            \ifmmode \@xp\mdots@\else \@xp\textellipsis \fi
            }
            \makeatother`
            solo che questo potrebbe “rompersi” qualora l’AMS decidesse di cambiare la definizione di \dots.

            L’autore di ellipsis potrebbe inserire un test prima di ridefinire \dots, prevedendo la possibilità che sia stato caricato amsmath. In questo modo sarebbe irrilevante l’ordine di caricamento.

            Il pacchetto mi ha però sempre dato qualche perplessità e rimango del parere che una costruzione come […] abbia bisogno di una sua definizione a parte:
            `\def\omissis{[\dots\unkern]}`
            Ciao
            Enrico

          • #24986
            lorenzo.pantieri
            Partecipante
              Up
              0
              Down
              ::


              Per Warsaw: per convincerti che \dots e \ldots non sono la stessa cosa, basta che compili questo esempio:
              `\documentclass{minimal}
              \usepackage{amsmath}
              \begin{document}
              $a+\dots+b$
              $a+\ldots+b$
              \end{document}
              `
              Quanto all’idea di ridefinire \dots come \dots\unkern, non funziona: lo spazietto che segue i punti ellittici a volte ci va, a volte no. Per esempio:
              `Che ne pensi di Tizio, Caio, \dots? % Qui lo spazietto ci va
              Parlammo (di Tizio, Caio, \dots). % Qui lo spazietto non ci va
              `
              Come scritto nella documentazione di ellipsis, il (piccolissimo!) bug di LaTeX sta nel mettere *sempre* quello spazietto, anziché limitarsi ad aggiungerlo solo nelle occasioni in cui è necessario.

              Naturalmente, concordo con Enrico sull’utilità di definire un apposito comando
              `\newcommand{\omissis}{[\dots\negthinspace]}
              `Tuttavia ciò non risolve tutti i problemi relativi alla spaziatura dei punti ellittici. Per esempio, se non si usa il pacchetto ellipsis bisognerebbe scrivere
              `Parlammo (di Tizio, Caio, \dots\unkern).
              `che è un po’ scomodo (soprattutto perché nel documento è facile che qualche \unkern scappi, producendo risultati difformi).

              La correzione suggerita da Enrico funziona molto bene 😀 (grazie mille egreg9, sei una sicurezza!), per mettere d’accordo ellipsis con amsmath. Ecco, a dirla tutta qualche problemino si potrebbe presentare comunque. Per esempio, se si ridefinisce la spaziatura fra i puntini con il comando
              `\renewcommand{\ellipsisgap}{0.1em}`
              ciò ha effetto sui punti in modo testuale, ma non in modo matematico.

              Se Enrico non ha altre aggiunte da fare, girerò la sua “bug fix” all’autore di ellipsis, che mi ha detto di essere disposto a correggere il pacchetto.

              Si tratta di finezze, ovvio, ma ad ellipsis ci sono affezionato: i bug di LaTeX che conosco si contano sulla punta delle dita di una mano, e quello (pur minuscolo) a cui rimedia ellipsis è il primo in cui mi sono imbattuto nella mia esperienza di utente di LaTeX…

              Ciao,
              L.

            • #24987
              Up
              0
              Down
              ::

              Per Warsaw: per convincerti che \dots e \ldots non sono la stessa cosa, basta che compili questo esempio:
              `\documentclass{minimal}
              \usepackage{amsmath}
              \begin{document}
              $a+\dots+b$
              $a+\ldots+b$
              \end{document}
              `
              Quanto all’idea di ridefinire \dots come \dots\unkern, non funziona: lo spazietto che segue i punti ellittici a volte ci va, a volte no. Per esempio:
              `Che ne pensi di Tizio, Caio, \dots? % Qui lo spazietto ci va
              Parlammo (di Tizio, Caio, \dots). % Qui lo spazietto non ci va
              `
              Come scritto nella documentazione di ellipsis, il (piccolissimo!) bug di LaTeX sta nel mettere *sempre* quello spazietto, anziché limitarsi ad aggiungerlo solo nelle occasioni in cui è necessario.

              Naturalmente, concordo con Enrico sull’utilità di definire un apposito comando
              `\newcommand{\omissis}{[\dots\negthinspace]}
              `Tuttavia ciò non risolve tutti i problemi relativi alla spaziatura dei punti ellittici. Per esempio, se non si usa il pacchetto ellipsis bisognerebbe scrivere
              `Parlammo (di Tizio, Caio, \dots\unkern).
              `che è un po’ scomodo (soprattutto perché nel documento è facile che qualche \unkern scappi, producendo risultati difformi).

              La correzione suggerita da Enrico funziona molto bene 😀 (grazie mille egreg9, sei una sicurezza!), per mettere d’accordo ellipsis con amsmath. Ecco, a dirla tutta qualche problemino si potrebbe presentare comunque. Per esempio, se si ridefinisce la spaziatura fra i puntini con il comando
              `\renewcommand{\ellipsisgap}{0.1em}`
              ciò ha effetto sui punti in modo testuale, ma non in modo matematico.

              Se Enrico non ha altre aggiunte da fare, girerò la sua “bug fix” all’autore di ellipsis, che mi ha detto di essere disposto a correggere il pacchetto.

              Si tratta di finezze, ovvio, ma ad ellipsis ci sono affezionato: i bug di LaTeX che conosco si contano sulla punta delle dita di una mano, e quello (pur minuscolo) a cui rimedia ellipsis è il primo in cui mi sono imbattuto nella mia esperienza di utente di LaTeX…

              Le tradizioni tipografiche divergono sull’uso dei puntini; in quella inglese e americana sono spaziati, in quella francese sono ravvicinati. Ho l’impressione che, come accade spesso, in Italia si segua ora l’una ora l’altra convenzione.

              L’importante è seguirne una in ciascun documento. Personalmente preferisco quella inglese, con i puntini spaziati e in genere cerco di usarli solo dove sono necessari (nelle formule), evitandoli nel testo normale. Posso capire quelli tra parentesi quadre per indicare un’omissione da una citazione; detesto quelli “sospensivi”. Detesto anche “ecc.”, ovviamente, come tutte le abbreviazioni (come p. es., cf., v. e simili), limitandomi a “p.” per “pagina” se seguita da un numero e poche altre fra cui quelle tradizionali dei titoli onorifici o professionali, che però tenderei a omettere.

              Quanto alle differenze fra puntini fuori dal modo matematico e dentro, bisogna osservare che, in definitiva, amsmath usa certi comandi che sono scelti in modo complicato, ma sono in tutto due: quelli per i puntini centrati sull’asse delle formule e quelli bassi. “Basta” modificare quelli.

              Ciao
              Enrico

            • #24988
              Up
              0
              Down
              ::

              Per Warsaw: per convincerti che \dots e \ldots non sono la stessa cosa, basta che compili questo esempio:
              `\documentclass{minimal}
              \usepackage{amsmath}
              \begin{document}
              $a+\dots+b$
              $a+\ldots+b$
              \end{document}
              `
              Quanto all’idea di ridefinire \dots come \dots\unkern, non funziona: lo spazietto che segue i punti ellittici a volte ci va, a volte no. Per esempio:
              `Che ne pensi di Tizio, Caio, \dots? % Qui lo spazietto ci va
              Parlammo (di Tizio, Caio, \dots). % Qui lo spazietto non ci va
              `
              Come scritto nella documentazione di ellipsis, il (piccolissimo!) bug di LaTeX sta nel mettere *sempre* quello spazietto, anziché limitarsi ad aggiungerlo solo nelle occasioni in cui è necessario.

              Naturalmente, concordo con Enrico sull’utilità di definire un apposito comando
              `\newcommand{\omissis}{[\dots\negthinspace]}
              `Tuttavia ciò non risolve tutti i problemi relativi alla spaziatura dei punti ellittici. Per esempio, se non si usa il pacchetto ellipsis bisognerebbe scrivere
              `Parlammo (di Tizio, Caio, \dots\unkern).
              `che è un po’ scomodo (soprattutto perché nel documento è facile che qualche \unkern scappi, producendo risultati difformi).

              Grazie, ora è abbastanza chiaro. Non uso LaTeX in modo matematico, non mi ero mai imbattuto nel comando \dots, ho sempre usato \ldots e mai a fine frase, ma solo tra parentesi quadre, per indicare un omissis.

              Comunque non proponevo di ridefinire \dots ma di creare un nuovo comando\Dots
              `\newcommand{\Dots}{\dots\unkern{ }}`
              da utilizzare quando serve. Più che altro mi interessava capire se il mio suggerimento è una strada percorribile o meno, o meglio, se la creazione di nuovi comandi in generale sia una pratica da seguire o da non utilizzare eccessivamente.

            • #24989
              lorenzo.pantieri
              Partecipante
                Up
                0
                Down
                ::

                Più che altro mi interessava capire se il mio suggerimento è una strada percorribile o meno, o meglio, se la creazione di nuovi comandi in generale sia una pratica da seguire o da non utilizzare eccessivamente.

                Per Warsaw: definire nuovi comandi può essere utile o dannoso, a seconda dei casi.

                Per esempio (classico), se devi scrivere un libro di botanica e vuoi che tutti i nomi latini delle piante appaiano in corsivo, è utile definire un nuovo comando che stampa il suo argomento in corsivo: in questo modo, se l’editore dovesse successivamente chiederti di comporre i nomi latini in neretto e non in corsivo, basterebbe una sola modifica al documento.

                Ci sono casi, invece, in cui definire nuovi comandi non solo è inutile, ma può finire con l’intorbidare le acque. Un comando come
                `\newcommand{\a}{\alpha}
                `
                permette di risparmiare qualche carattere, ma rischia di rendere il sorgente poco leggibile (soprattutto se ci sono molti comandi di quel tipo), e anche poco portabile. Mi è capitato di dover raccogliere in un unico documento lavori scritti da autori diversi; se un autore definisce
                `\newcommand{\a}{\mathcal{A}}`
                ed un altro dà di \a la definizione precedente, i due preamboli sono incompatibili e bisogna metterci mano.

                Le tradizioni tipografiche divergono sull’uso dei puntini; in quella inglese e americana sono spaziati, in quella francese sono ravvicinati.

                […]

                Quanto alle differenze fra puntini fuori dal modo matematico e dentro, bisogna osservare che, in definitiva, amsmath usa certi comandi che sono scelti in modo complicato, ma sono in tutto due: quelli per i puntini centrati sull’asse delle formule e quelli bassi. “Basta” modificare quelli.

                Quello che hai esposto, Enrico, è un motivo in più a favore della possibilità di ridefinire la spaziatura tra i puntini intervenendo su \ellipsisgap. Purtroppo, anche dopo la tua modifica, intervenire su \ellipsisgapo ha effetto solo sulla spaziatura dei punti in modo testuale, ma non matematico, e questo non è il massimo.

                Ho parlato con l’autore di ellipsis, che dice di non aver (più) tempo per rimaneggiare il pacchetto. Uffa. Perché se si trovasse il modo (leggi: se tu trovassi il modo…) di correggere anche questo problema, mi sentirei senz’altro di consigliare il pacchetto ellipsis (integrato della tua modifica). Stando così le cose, invece, non mi senitrei di consigliare un pacchetto (per certi aspetti) “difettato”. Un vero peccato.

                Grazie mille, comunque…

                A presto,
                L.

              • #24990
                Up
                0
                Down
                ::

                Per Warsaw: definire nuovi comandi può essere utile o dannoso, a seconda dei casi.

                Per esempio (classico), se devi scrivere un libro di botanica e vuoi che tutti i nomi latini delle piante appaiano in corsivo, è utile definire un nuovo comando che stampa il suo argomento in corsivo: in questo modo, se l’editore dovesse successivamente chiederti di comporre i nomi latini in neretto e non in corsivo, basterebbe una sola modifica al documento.

                Ci sono casi, invece, in cui definire nuovi comandi non solo è inutile, ma può finire con l’intorbidare le acque. Un comando come
                `\newcommand{\a}{\alpha}
                `
                permette di risparmiare qualche carattere, ma rischia di rendere il sorgente poco leggibile (soprattutto se ci sono molti comandi di quel tipo), e anche poco portabile. Mi è capitato di dover raccogliere in un unico documento lavori scritti da autori diversi; se un autore definisce
                `\newcommand{\a}{\mathcal{A}}`
                ed un altro dà di \a la definizione precedente, i due preamboli sono incompatibili e bisogna metterci mano.

                tutto chiaro, grazie mille.

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

            Go to top