Differenze tra \bm e \boldsymbol

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


      Carissimi, per il neretto quale comando è consigliabile usare? Nell’Arte consiglio \bm (se ben ricordo fu Enrico a suggerirmelo, a suo tempo: ma sono passati anni, potrei sbagliarmi), ma a volte non funziona.
      `\documentclass{scrbook}
      \usepackage{bm}
      \usepackage{amsmath,amssymb}
      \usepackage[eulermath]{classicthesis}
      \usepackage{caption}
      \usepackage{arsclassica}
      \begin{document}
      \[
      \vec{E}
      \qquad
      \bm{E}
      \qquad
      \boldsymbol{E}
      \]
      \end{document}`
      In questa discussione si confrontano \bm e \boldsymbol.

      http://tex.stackexchange.com/questions/3238/bm-package-versus-boldsymbol

      Le differenze discusse nel link qui sopra sono finezze, ma nel codice che vi ho segnalato c’è una differenza grande come una casa (a favore di \boldsymbol).

      Allora, vorrei andare a fondo alla cosa. Voglio capire bene la differenza tra \mathbf, \bm e \boldsymbol.

      Ah, sono al corrente del fatto che bm ridefinisce \boldsymbol, per cui
      `\usepackage{amsmath,amssymb}
      \usepackage{bm}`
      è diverso da
      `\usepackage{bm}
      \usepackage{amsmath,amssymb}`
      Grazie anticipate.

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


          Ho fatto un po’ di prove.
          `\documentclass{book}
          \usepackage{bm}
          \usepackage{amsmath,amssymb}
          %\usepackage[eulermath]{classicthesis}
          \begin{document}
          \[
          \mu, M
          \qquad
          \mathbf{\mu}, \mathbf{M}
          \qquad
          \bm{\mu}, \bm{M}
          \qquad
          \boldsymbol{\mu}, \boldsymbol{M}
          \]
          \end{document}`
          Con questo codice:
          1. \mathbf non fa niente su $\mu$ e mette in tondo $M$: in pratica, fa cilecca in entrambi i casi;
          2. \bm e \boldsymbol rimediano alla grande, nello stesso identico modo.

          Fin qui, \bm e \boldsymbol sono pari. Se si decommenta la chiamata a classicthesis, però:

          1. \mathbf, come prima, non fa niente su $\mu$ e mette in tondo $M$, continuando a fare cilecca in entrambi i casi;
          2. \bm li mette in neretto, ma cambia il font! ❗
          3. \boldsymbol fa quello che deve fare.

          Insomma, a questo punto toglierei dall’Arte il consiglio di usare \bm di bm e indirizzerei l’utente verso \boldsymbol.

          Che ne dite?

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


            Altre due cilecche di\ bm, in situazioni in cui con \boldsymbol si va lisci come l’l’olio:
            `\usepackage{bm}
            \usepackage{amsmath,amssymb}
            %\usepackage[eulermath]{classicthesis}
            \begin{document}

            \[
            \dots
            \qquad
            %\bm{\dots} % non funziona!!!
            \qquad
            \boldsymbol{\dots}
            \]

            \[
            \hat{\dot{\phi}}
            \qquad
            \bm{\hat{\dot{\phi}}}% non funziona
            \bm{{\hat{\dot{\phi}}}}% funziona: devo mettere due parentesi graffe in più
            \qquad
            \boldsymbol{\hat{\dot{\phi}}}
            \]
            \end{document}
            `
            A questo punto, nell’Arte sostituisco senz’altro il riferimento a \bm con \boldsymbol.

          • #108951
            Up
            0
            Down
            ::


            Dal manuale di [tt]bm[/tt]

            This package interrogates the font allocations of the bold and heavy math versions,
            to determine which bold fonts are available. This means that it is best to load the
            package after any packages that define new symbol fonts, or (like the mathtime
            package) completely change the symbol font allocations.

            Se carichi [tt]bm[/tt] dopo [tt]classicthesis[/tt] non hai nessun problema

          • #108952
            Up
            0
            Down
            ::

            lorenzo.pantieri” post=109142Altre due cilecche di\ bm, in situazioni in cui con \boldsymbol si va lisci come l’l’olio:

            Beh, stai ripetendo i casi mostrati nella risposta di Philippe Goutet su TeX.se

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

              Elrond” post=109146Se carichi [tt]bm[/tt] dopo [tt]classicthesis[/tt] non hai nessun problema

              Caricare per ultimo bm aiuta, ma non è vero che non ho nessun problema!
              `\documentclass{book}
              \usepackage{amsmath}
              \usepackage{bm}
              \begin{document}
              \[
              \bm{\dots}
              \]
              \end{document}`
              Questo documento minimo a me dà un errore fatale.

              Insomma:
              1. bm va caricato dopo tutti gli altri pacchetti che lavorano sui font, pena casini inenarrabili;
              2. anche così, ci sono errori.

              In conclusione, \bm crea più problemi di quanti ne risolve: meglio \boldsymbol, che non ha questi inconvenienti (e in più è “di serie” con amsmath, che nelle mie guide do sempre per caricato).

            • #108954
              Up
              0
              Down
              ::

              lorenzo.pantieri” post=109150

              Se carichi [tt]bm[/tt] dopo [tt]classicthesis[/tt] non hai nessun problema

              Caricare per ultimo bm aiuta, ma non è vero che non ho nessun problema!
              `\documentclass{book}
              \usepackage{amsmath}
              \usepackage{bm}
              \begin{document}
              \[
              \bm{\dots}
              \]
              \end{document}`
              Questo documento minimo a me dà un errore fatale.

              `\bm{{\dots}}`

              lorenzo.pantieri” post=109150Insomma:
              1. bm va caricato dopo tutti gli altri pacchetti che lavorano sui font, pena casini inenarrabili;

              Anche [tt]hyperref[/tt] va caricato dopo tutti gli altri pacchetti, deduco che deprechi anche questo pacchetto.

              lorenzo.pantieri” post=1091502. anche così, ci sono errori.

              L’unica attenzione che bisogna avere è mettere delle parentesi in più in alcuni casi particolari. Suvvia, vuoi scrivere una guida per neofiti che bene che vada useranno [tt]\bm[/tt] per i vettori e ti fai problemi perché non rende bene in neretto i puntini di sospensione che non sono un comando matematico per il quale [tt]\bm[/tt] dovrebbe essere usato?

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

                Elrond” post=109151Anche [tt]hyperref[/tt] va caricato dopo tutti gli altri pacchetti, deduco che deprechi anche questo pacchetto.

                Deduci male.

                Posto che non amo i conflitti tra pacchetti (mi ricordano i giustamente vituperati conflitti fra Estensioni dei vecchi Mac, che non per niente sono state eliminate!), i riferimenti testuali sono qualcosa di importante e “invasivo”: ci sta che un pacchetto come hyperref, che è fatto di diverse migliaia di righe di codice e che svolge una funzione così complessa, abbia richieste particolari. Il pacchetto [tt]bm[/tt], invece, si occupa di un dettaglio tipografico: dovrebbe migliorare il comando \boldsymbol di amsmath, che è già ottimo di suo; [tt]bm[/tt] dà troppi problemi rispetto a quello che si propone. Il gioco non vale la candela.

                Ah, un’altra cosa:
                1. hyperref va caricato per ultimo;
                2. bm va caricato dopo i pacchetti che impostano i font.

                E allora che si fa con classicthesis, che carica hyperref e allo stesso tempo imposta i font? Il codice
                `\usepackage{classicthesis}
                \usepackage{bm}`
                non soddisfa il punto 1, mentre
                `\usepackage{bm}
                \usepackage{classicthesis}`
                non soddisfa il punto 2.

                lorenzo.pantieri” post=109150L’unica attenzione che bisogna avere è mettere delle parentesi in più in alcuni casi particolari. Suvvia, vuoi scrivere una guida per neofiti che bene che vada useranno [tt]\bm[/tt] per i vettori e ti fai problemi perché non rende bene in neretto i puntini di sospensione che non sono un comando matematico per il quale [tt]\bm[/tt] dovrebbe essere usato?

                No, le attenzioni sono due: rispettare l’ordine di caricamento (pena risultati inenarrabili) e inserire delle graffe extra. Quelle graffe extra, poi, sono pessimo LaTeX. Un codice come
                `\bm{{\dots}}`
                mi va bene come soluzione “spiccia e sporca”, ma è un “TeXnicismo da cui l’Arte rifugge come la peste”, per citare il mio Egregio prefatore.

                Il comando \boldsymbol di amsmath fa quello che deve fare, lo fa molto bene, non richiede trucchi e accorgimenti particolari ed è di serie con amsmath, che do per caricato: \boldsymbol vince nettamente su \bm.

                ElrondBeh, stai ripetendo i casi mostrati nella risposta di Philippe Goutet su TeX.se

                Certo! Non ho pretese di originalità. Neppure una riga dell’Arte è “mia”. Il che è un vantaggio, intendiamoci! L’Arte è una sintesi di quello che scrivono quelli che LaTeX lo conoscono in profondità… 😉

                Grazie ancora.

              • #108956
                Up
                0
                Down
                ::

                lorenzo.pantieri” post=109153E allora che si fa con classicthesis, che carica hyperref e allo stesso tempo imposta i font?

                Non sono io quello che usa e diffonde l’uso di [tt]classicthesis[/tt] 🙂

                lorenzo.pantieri” post=109153
                Il codice
                `\usepackage{classicthesis}
                \usepackage{bm}`
                non soddisfa il punto 1, mentre
                `\usepackage{bm}
                \usepackage{classicthesis}`
                non soddisfa il punto 2.

                Andrei per la prima strada. Non ho guardato il codice di [tt]bm[/tt] e [tt]hyperref[/tt], ma dubito che [tt]bm[/tt] ridefinisca comandi di [tt]hyperref[/tt].

                lorenzo.pantieri” post=109150Un codice come
                `\bm{{\dots}}`

                Cosa non è chiaro in “i puntini di sospensione che non sono un comando matematico per il quale \bm dovrebbe essere usato”? La “m” di “bm” sta per “math”. Nel manuale di bm leggo

                In order to get the correct spacing, [tt]\bm[/tt] has to ‘investigate’ the definition of the
                commands in its argument. It is possible that some strange constructions could
                ‘confuse’ this investigation. If this happens then LaTeX will almost certainly stop
                with a strange error. This should not happen with any of the math symbols defined
                in the base LaTeX or AMS distributions, or any commands defined in terms of those
                symbols using normal LaTeX math constructs.

                Ah, un esempio:
                `\documentclass{book}
                \usepackage{bm}
                \usepackage{amsmath}
                \begin{document}
                \[ \bm{\sum} \boldsymbol{\sum} \]
                \end{document}`
                Qual è il comando che non funziona a dovere? (Volendo usare solo [tt]amsmath[/tt], comunque la soluzione è nel manuale del pacchetto)

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

                  Elrond” post=109154Non sono io quello che usa e diffonde l’uso di [tt]classicthesis[/tt] 🙂

                  Ci hanno provato in diversi a farmi rinunciare a ClassicThesis: non credo che lo farò per poter usare bm in tutta tranquillità… 😉

                  Elrond” post=109154Cosa non è chiaro in “i puntini di sospensione che non sono un comando matematico per il quale \bm dovrebbe essere usato”? La “m” di “bm” sta per “math”.

                  Sarà. Io però nell’Arte scrivo, nel capitolo sulla matematica:

                  Per inserire punti ellittici in una formula si usa il comando \dots, che li mette automaticamente sulla linea di base del testo o li centra rispetto alla riga a seconda del contesto.

                  I puntini in matematica si usano eccome. E \dots li mette automaticamente dove servono. Non posso farci niente se bm non gestisce a dovere un comando elementare come \dots.
                  `\documentclass{book}
                  \usepackage{amsmath}
                  %\usepackage{bm}

                  \begin{document}
                  Per inserire punti ellittici in una formula si usa il comando \verb!\dots!,
                  che li mette automaticamente sulla linea di base del testo o li centra
                  rispetto alla riga a seconda del contesto.
                  \[
                  x_1,\dots,x_n \qquad x_1+\dots+x_n
                  \qquad
                  \boldsymbol{x_1,\dots,x_n \qquad x_1+\dots+x_n}
                  \]
                  \end{document}`
                  Tutto facile, con \boldsymbol. Ma prova a decommentare la chiamata a bm e hai un errore fatale in compilazione. Un errore fatale. Per aver cercato di mettere tre puntini in neretto. Suvvia. Potrebbe essere uno spot per Word! 😉

                  Elrond” post=109154Ah, un esempio:
                  `\documentclass{book}
                  \usepackage{bm}
                  \usepackage{amsmath}
                  \begin{document}
                  \[ \bm{\sum} \boldsymbol{\sum} \]
                  \end{document}`
                  Qual è il comando che non funziona a dovere? (Volendo usare solo [tt]amsmath[/tt], comunque la soluzione è nel manuale del pacchetto)

                  Non ho mai visto in vita mia un simbolo di sommatoria in neretto. Tuttavia, il fatto che \boldmath lo lasci invariato è una cosa molto meno grave rispetto a un errore fatale in compilazione!

                  Per me, \boldsymbol batte \bm 3 a 1. E, no: nell’Arte non li citerò entrambi: il troppa storpia! 🙂

                • #108958
                  Up
                  0
                  Down
                  ::

                  lorenzo.pantieri” post=109155Non posso farci niente se bm non gestisce a dovere un comando elementare come \dots.

                  Potresti leggere la definizione di [tt]\dots[/tt] e scoprire che è definito così:
                  `\DeclareRobustCommand{\dots}{%
                  \ifmmode\mathellipsis\else\textellipsis\fi}`
                  Non è un comando banale perché fa un controllo sulla modalità attualmente attiva e poi distribuisce il lavoro a [tt]\mathellipsis[/tt] o [tt]\textellipsis[/tt] a seconda della necessità. Per la cronaca
                  `\bm{\mathellipsis}`
                  funziona perché è direttamente definito così come si aspetta [tt]\bm[/tt].

                  lorenzo.pantieri” post=109155Non ho mai visto in vita mia un simbolo di sommatoria in neretto.

                  Potrei dire la stessa cosa dei puntini di sospensione 😀 (Ah, l’ho già fatto.)

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

                    Elrond” post=109158

                    Non ho mai visto in vita mia un simbolo di sommatoria in neretto.

                    Potrei dire la stessa cosa dei puntini di sospensione.

                    Certo. Ma che un comando addirittura si pianti ignominiosamente su \dots lo trovo ben poco bello… 😉

                  • #108960
                    OldClaudio
                    Partecipante
                      Up
                      0
                      Down
                      ::


                      Ragazzi, il pacchetto bm che definisce il comando \bm differisce dal comando \boldsymbol sotto aspetti che hanno a che fare con gli “inner workings” del modulo di composizione della matematica dei vari compilatori.

                      tex-the program e pdftex-the program, e quindi pdflatex il compilatore, hanno un limite di 16 gruppi matematici (che a livello di comandi nativi sono chimati math families. La matematica OpenType usata da xelatex e lualatex non ha questo limite, e già questo sarebbe un buon motivo per usare solo lualatex. Tuttavia L’Arte parla solo di pdflatex, e quindi il problema dei 16 gruppi matematici si sente, eccome; a voi forse non è mai capitato di suerare questo limite ma a me sì.

                      In sostanza \bm fa in modo che si possano usare simultanemante i segni medi e i segni neri duplicando i gruppi matematici in mdo da usare contemporaneamente gli uni e gli altri; se però quelche font matematico inconsueto viene usato, e non è stata definita anche la sua versione bold, non mette in nero l’argomento di \bm quando quel font è di default.

                      Questo modo di procedere rende la compilazione più spedita, rispetto a quello che fa \boldsymbol; questo sostanzialmente apre una scatola (e il mode torna ad essere textmode, specifica la bold version con l’appostio comando che si può usare solo prima di entrare in modo matematico; entra in modo matematic e compone con il font nero l’argomento di \boldsymbol[ chuede la matematica e poi chiude la scatola, ripristinando tutti i parametri che erano stati inviati allo stack all’inizio del comando. Tutto questo rende il lavoro più lento.

                      Quando sono stati scritti i pacchetti amsmath e bm, non esistevano né xetex né luatex; quindi esisteva il limite dei 16 gruppi matematici; negli anni ’90 i calcolatori erano relativamente più veloci di quelli con cui Knuth aveva cominciato a sviluppare il sistema TeX, ma il tempo di esecuzione era decisamente un problema serio. Oggi questi problemi non ci sono più, tanto che il linguaggio L3( in fase di sviluppo) non se ne preoccupa più.

                      Allora oggi il problema della velocità non dovrebbe più preoccupare e usare \boldsymbol invece di \bm vuol dire allungare solo il tempo di digitazione del file sorgente, ma in fondo si tratta solo di qualche tasto in più di tanto in tanto.

                      Io in passato ho sempre preferito usare \bm; comodo anche per la digitazione e non ho mai avuto problemi di nessun genere; da quando mi sono scontrato con il famoso numero 16, ho smesso e sono tornato a \boldsymbol. Ora che posso usare lualatex non mi preoccupo nemmeno più di queste cose perché la matematica OpenType richiede un solo font matematico per tutto quanto: chiaro, medio, nero, eccetera; lettere, simboli, operatori, eccetera.

                      Come ho scritto in altri messaggi; ora uso pdflatex o lualatex a seconda delle necessità; pdflatex per documenti semplici e lualatex per documenti complessi.

                      E L’Arte? Lorenzo indichi proprio quello che vuole, tanto la velocità non è un problema e i font usati sono gli stessi,se esistono e sono stati impostati correttamente i math-alphabet e i math-symbol.

                      Se poi classicthesis mette qualche paletto perché carica dei font magari incompleti, o senza la corrispondente versione matematica accessibile al pacchetto bm, vada pure avanti con \boldsymbol. ma si ricordi sempre che classicthesis produce un risultato grafico ottimo, ma a spese di un codice mal documentato e senza preoccuparsi troppo della tempistica con cui caricare i pacchetti. Siccome mi sono stufato di cercare di decifrane il codice di classicthesis, non so nemmeno se caricando hyperref, lo fa senza opzioni e differito fino a \begin{document}, o meglio a EndPreamble, in modo da non impedirne l’uso da parte dell’utente.

                      In sostanza, questo è come la vedo io, senza mitizzare questo o quel pacchetto, ma smitizzando classicthesis come ormai dovrebbe essere chiaro visto che sono anni che lo sto facendo.

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

                        OldClaudio” post=109160In sostanza, questo è come la vedo io, senza mitizzare questo o quel pacchetto, ma smitizzando classicthesis come ormai dovrebbe essere chiaro visto che sono anni che lo sto facendo.

                        In queste vacanze mi sono venute un paio di idee. Ne riparleremo. 😉

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

                    Go to top