Pedici nei comandi \ket, \bra, \braket

  • Creatore
    Topic
  • #116843
    Up
    0
    Down
    ::


    Buongiorno a tutti, questo è in assoluto il mio primo intervento in questo forum. Ho già provato, qui e in posti in lingua inglese, a cercare la risposta al mio dubbio, ma senza successo. Spero di aver cercato abbastanza a lungo, e mi scuso se se n’era già parlato in passato.
    Il mio dubbio è molto semplice. Io sto usando il pacchetto braket, e scrivendo un ket in questa maniera:

    `\ket{a+\frac{1}{2}}_I `

    il pedice “I” finisce all’altezza del 2 a denominatore. Mentre, per ket senza frazioni (per esempio \ket{a}_I ), il pedice si trova all’altezza del “simbolo di maggiore” del ket. Io vorrei che succedesse così anche nel caso in cui nel ket siano presenti frazioni, e sono sicuro che ci sia un modo per farlo, perché è proprio quel che succede nelle dispense che sto consultando e che vi linko: https://people.sissa.it/~bertmat/susycourse.pdf, a pagina 41.
    Se qualcuno mi dice per favore come si allega una foto in formato .png, vi mostro ancor più chiaramente il problema.
    Scusate il disturbo e grazie in anticipo,

    Francesco

Visualizzazione 6 filoni di risposte
  • Autore
    Risposte
    • #116844
      OldClaudio
      Partecipante
        Up
        0
        Down
        ::


        Benvenuto nel forum

        Purtroppo non si vede nemmeno il file di cui hai inviato l’URL

        Quindi è difficile capire quello che ti succede e che cosa vorresti ottenere.

        Sarebbe utile se allegassi un esempio minimo compilabile (EMC), cioè un breve file sorgente che contiene la tua stessa riga [tt]\documentclass[…]{…}[/tt], il minimo di pacchetti necessari per replicare il problema, e un corpo di documento minimale compreso fra [tt]\begin{document}[/tt] e [tt]\end{document}[/tt]. Ptresti aggiungere se ti fa comodo il pacchettino mwe, la cui sigla sta per Minimum Working Example (dopo averne letto la documentazione (terminale: comando texdoc mwe)). Potrebbe fare al caso tuo.
        Un EMC aiuta sempre chi ti vuol dare una mano; includine il codice nel messaggio, che ci invii poi evidenziane le righe e infine clicca sulla piccola icona qui sopra che sembra un foglio bianco su cui sono sovrapposti due segni < > colorati in blu, come li ho disegnati io. Quando la punta del cursore del mouse arriva sopra quell’icona si apre un rettangolino con “Code” scritto dentro; quindi sei sicuro che è l’icona giusta.

      • #116845
        Up
        0
        Down
        ::


        Grazie per l’aiuto Claudio. Provo a fare ciò che dici:

        `
        \documentclass[a4paper,10pt]{article}
        \usepackage[T1]{fontenc}
        \usepackage[utf8]{inputenc}
        \usepackage[italian,english]{babel}
        \usepackage{amsmath}
        \usepackage{amssymb}
        \usepackage{braket}

        \begin{document}

        \begin{equation}
        \begin{split}
        &\ket{a+\frac{1}{2}}_I \\ %PRIMO CASO
        &\ket{a}_I %SECONDO CASO
        \end{split}
        \end{equation}

        \end{document}
        `

        Così dovrebbe andare. Come (spero) si possa vedere visualizzando il PDF dal codice, il pedice nel PRIMO CASO è all’altezza del 2 a denominatore, mentre nel SECONDO CASO è all’altezza “normale”, poco più in basso del ket. Io vorrei che si trovasse lì anche nel PRIMO CASO, ma non so come fare.
        Per quanto riguarda il file, mi sembra strano che non si veda… È un file pubblico. Forse hai premuto solo sul link in blu in cui c’è il collegamento, però c’è anche un altro pezzettino. Comunque è il primo risultato che uno trova cercando su google “bertolini SISSA supersymmetry”, quindi in ogni caso ora dovresti poterci andare. A pagina 41 c’è un esempio di quello che vorrei replicare io: un ket con una frazione ma con pedice più in alto rispetto al 2 a denominatore.

      • #116846
        OldClaudio
        Partecipante
          Up
          0
          Down
          ::


          Racchiudi la frazione nell’argomento del comando \smash`\documentclass[a4paper,10pt]{article}
          \usepackage[T1]{fontenc}
          \usepackage[utf8]{inputenc}
          \usepackage[italian,english]{babel}
          \usepackage{amsmath}
          \usepackage{amssymb}
          \usepackage{braket}

          \begin{document}

          \begin{equation}
          \begin{split}
          &\ket{a+\smash{\frac{1}{2}}}_I \\ %PRIMO CASO
          &\ket{a}_I %SECONDO CASO
          \end{split}
          \end{equation}

          \end{document}` Naturalmente schiacciando la frazione, l’altezza apparente della riga diminuisce, per cui dopo l’a capo devi metterci uno spazio adeguato, magari qualcosa come [tt]\\[2ex][/tt], aggiustando il valore come ti sembra meglio.
          Si potrebbe rendere la cosa anche automatica ma bisogna definire un nuovo comando un po’ “acrobatico”

          O meglio, è un po’ acrobatico, ma poco poco; puoi aggiungre un pilastrino matematico invisibile:`\documentclass[a4paper,10pt]{article}
          \usepackage[T1]{fontenc}
          \usepackage[utf8]{inputenc}
          \usepackage[italian,english]{babel}
          \usepackage{amsmath}
          \usepackage{amssymb}
          \usepackage{braket}

          \begin{document}

          \begin{equation}
          \begin{split}
          &\ket{a+{\frac{1}{2}}}\mathstrut_I \\ %PRIMO CASO
          &\ket{a}_I %SECONDO CASO
          \end{split}
          \end{equation}

          \end{document}`

        • #116847
          Up
          0
          Down
          ::


          Grazie mille, davvero! La seconda soluzione non mi convince molto, perché il pedice rimane troppo alto se confrontato con il vertice del ket, ma la prima è perfetta, mettendo [1ex]. Grazie Claudio, buona giornata!

          Francesco

        • #116848
          Up
          0
          Down
          ::


          Non so: secondo il mio modesto parere, se dentro il ket c’è una frazione in [tt]\displaystyle[/tt], anche il ket stesso (e/o il bra) dovrebbe crescere di conseguenza. Ricordo che [tt]\Ket[/tt] (con la kappa maiuscola) produce un ket che cresce automaticamente con il suo contenuto (usando [tt]\left… …[/tt] [ [tt]\middle… …[/tt] ] [tt]\right…[/tt]); naturalmente, il pacchetto braket fornisce anche [tt]\Bra[/tt] e [tt]\Braket[/tt]. Si noti che si possono anche ridurre le dimensioni della frazione rimpiazzando il comando [tt]\frac[/tt] con il comando [tt]\tfrac[/tt].

          Comunque, il pacchetto braket sembra non essere più stato aggiornato dopo il 2006, e di conseguenza è rimasto indietro rispetto alla soluzione sistematica per tutti i problemi di questo tipo offerta dal più moderno pacchetto mathtools, con la sua dichiarazione [tt]\DeclarePairedDelimiter[/tt] e comandi a essa collegati. Il manuale del pacchetto mathtools tratta espressamente, come esempio tipico di applicazione, il problema di definire un comando [tt]\braket[/tt], in modo che offra tutta la flessibilità che si può desiderare: si veda il paragrafo 3.6 (Paired delimiters) del suddetto manuale, e in particolare pag. 27.

          Un’ultima osservazione riguardo ai pilastrini: il comando [tt]\mathstrut[/tt] equivale a [tt]\vphantom([/tt], e a sua volta [tt]\vphantom[/tt] è implementato per mezzo di una primitiva [tt]\mathchoice[/tt]; ora, ho più volte constatato che anche persone molto esperte in fatto di TeX tendono a dimenticare che, in una lista matematica, non ogni nodo ha la capacità di avere apici o pedici, ma solo quei nodi che sono atomi; [tt]\mathchoice[/tt] produce un nodo che non è un atomo (è una «scelta a quattro vie»), e, di conseguenza, non può di per sé avere apici e/o pedici. Quindi, se si scrive`\mathstrut_I`il pedice I non viene attaccato al pilastrino, bensì a un atomo con il nucleo vuoto che viene all’uopo inserito da TeX. Se però si scrive`{\mathstrut}_I`la faccenda cambia completamente: infatti, la parentesi graffa aperta istruisce TeX a iniziare una nuova lista matematica, a un livello di annidamento più in basso, la quale si conclude quando si incontra la corrispondente graffa chiusa; a quel punto, la lista matematica subordinata viene conclusa e “impacchettata” in un atomo (aha!), il quale viene aggiunto in coda alla lista matematica che era in corso prima dell’apertura della graffa, e tale atomo — essendo, appunto, un atomo — ha la capacità di avere un pedice. In definitiva, il pedice I, in questo secondo caso, viene attaccato all’atomo che contiene la sotto-lista che contiene (unicamente) il pilastrino, e dunque compare più in basso. Si veda il codice subito sotto per un confronto tra le due situazioni.

          Codice per un esempio compilabile che illustra quel che sono andato dicendo:
          `
          \documentclass[a4paper]{article}
          \usepackage[T1]{fontenc}
          \usepackage[italian]{babel}
          \usepackage{amsmath}
          \usepackage{braket}

          \begin{document}

          Bla bla bla.
          \begin{align*}
          &\Ket{a+\frac{1}{2}}_{\!I} \\ % notare lo spazietto negativo (“\!”)
          &\ket{a}_I
          \end{align*}
          Soluzione alternativa:
          \begin{align*}
          &\ket{a+\tfrac{1}{2}}_{I}
          \intertext{oppure}
          &\Ket{a+\tfrac{1}{2}}_{I}
          \end{align*}

          Attenzione ai “fantasmi''!
          \begin{align*}
          &\ket{a+\smash{\frac{1}{2}}}\mathstrut_{\!I} \\[2ex]
          &\ket{a+\smash{\frac{1}{2}}}{\mathstrut}_{\!I}
          \end{align*}

          \end{document}
          `

          Ciao.


          Gustavo

        • #116849
          OldClaudio
          Partecipante
            Up
            0
            Down
            ::


            Bravo Gustavo; c’è sempre da imparare; non avevo notato che \mathstrut non è un atomo.
            Grazie mille
            Claudio

          • #116850
            Up
            0
            Down
            ::


            Con codice dal mio ultimo articolo per il GuITmeeting:

            `
            \documentclass[a4paper]{article}
            \usepackage{amsmath}
            \usepackage{xparse}

            \NewDocumentCommand{\bra}{som}{%
            \IfBooleanTF{#1}
            {\left\langle #3 \right|}
            {%
            \IfNoValueTF{#2}
            {\langle#3\mathclose|}
            {\mathopen{#2\langle}#3\mathclose{#2|}}%
            }
            }
            \NewDocumentCommand{\ket}{som}{%
            \IfBooleanTF{#1}
            {\left| #3 \right\rangle}
            {%
            \IfNoValueTF{#2}
            {\mathopen|#3\rangle}
            {\mathopen{#2|}#3\mathclose{#2\rangle}}%
            }
            }

            \NewDocumentCommand{\braket}{som}{%
            \IfBooleanTF{#1}
            {\extensiblebraket{#3}}
            {\fixedbraket{#2}{#3}}%
            }

            \ExplSyntaxOn
            \NewDocumentCommand{\extensiblebraket}{m}
            {
            \group_begin:
            \char_set_active_eq:nN { `| } \egreg_bar_auto:
            \mathcode`|=”8000 \scan_stop:
            \left\langle
            #1
            \right\rangle
            \group_end:
            }

            \NewDocumentCommand{\fixedbraket}{mm}
            {
            \group_begin:
            \char_set_active_eq:nN
            { `| } % active char is |
            \egreg_bar_fixed: % equal to
            \mathcode`|=”8000 \scan_stop:
            \IfNoValueTF{#1}
            { \egreg_braket:n { #2 } }
            { \egreg_braket:nn { #1 } { #2 } }
            \group_end:
            }

            \cs_new_protected:Nn \egreg_bar_auto:
            {
            \nonscript\,\middle\vert\nonscript\,
            }
            \cs_new_protected:Nn \egreg_bar_fixed:
            {
            \mathinner{\egreg_size: \vert}
            }
            \cs_new_protected:Nn \egreg_braket:n
            {
            \cs_set_protected:Nn \egreg_size: { }
            \langle #1 \rangle
            }
            \cs_new_protected:Nn \egreg_braket:nn
            {
            \cs_set_protected:Nn \egreg_size: { #1 }
            \mathopen{\egreg_size: \langle}
            #2
            \mathclose{\egreg_size: \rangle}
            }
            \ExplSyntaxOff

            \begin{document}

            \begin{equation}
            \begin{split}
            &\ket*{a+\frac{1}{2}}_I \\
            &\ket[\Big]{a+\frac{1}{2}}_I \\
            &\ket[\bigg]{a+\frac{1}{2}}_I \\
            &\ket{a}_I
            \end{split}
            \end{equation}

            \end{document}
            `

            [attachment=2343]Screenshot2019-12-12at09.55.38.png[/attachment]

            Ciao
            Enrico

            Attachments:
            You must be logged in to view attached files.
        Visualizzazione 6 filoni di risposte
        • Devi essere connesso per rispondere a questo topic.

        Go to top