SImboli logici

  • Creatore
    Topic
  • #84831
    samiel
    Partecipante
      Up
      0
      Down
      ::


      Per comporre un certo numero di formule logiche, alcune elementari
      e che stanno tranquillamente “in linea”, altre un po’ più complesse
      “in display” (come si direbbe usando la terminologia di LaTeX),
      che comportamento mi conviene adottare?
      Trattarle come espressioni matematiche? Esistono pacchetti specifici?
      Allego un’immagine per dare un’idea del lavoro che devo fare

      grazie
      m

      Attachments:
      You must be logged in to view attached files.
    Visualizzazione 22 filoni di risposte
    • Autore
      Risposte
      • #84832
        Up
        0
        Down
        ::

        samiel” post=84237Per comporre un certo numero di formule logiche, alcune elementari
        e che stanno tranquillamente “in linea”, altre un po’ più complesse
        “in display” (come si direbbe usando la terminologia di LaTeX),
        che comportamento mi conviene adottare?
        Trattarle come espressioni matematiche? Esistono pacchetti specifici?
        Allego un’immagine per dare un’idea del lavoro che devo fare

        grazie
        m

        Da quello che vedo, non intendendomene di matematica, anche le espressioni che nella tua figura sono in display starebbero tranquillamente in linea. Se sono così importanti da meritare il display, io le metterei in display matematico. Credo che i vari pacchetti amsmath, amssymb eccetera definiscano anche un buon numero di simboli logici.

        Ciao
        Tommaso

      • #84833
        Up
        0
        Down
        ::

        samiel” post=84237Per comporre un certo numero di formule logiche, alcune elementari
        e che stanno tranquillamente “in linea”, altre un po’ più complesse
        “in display” (come si direbbe usando la terminologia di LaTeX),
        che comportamento mi conviene adottare?
        Trattarle come espressioni matematiche? Esistono pacchetti specifici?

        Sì, quelle sono tutte formule “matematiche”. A parte i pacchetti specifici
        per comporre matematica, ti segnalo philex e linguex,
        pensati per testi di filosofia del linguaggio e linguistica.

        Ciao
        Ivan

      • #84834
        samiel
        Partecipante
          Up
          0
          Down
          ::


          Devo solo verificare che le formule sono incluse in $…$
          non ci siano spazi indesiderati o corsivi non voluti.
          Ma sto partendo per Vienna, quando torno provo.
          Porterò una Sacher originale per il GUIT 🙂

          m

        • #84835
          samiel
          Partecipante
            Up
            0
            Down
            ::


            Ho fatto qualche tentativo, del resto niente di complicato,
            e trovato utili materiali qui:
            http://www.logicmatters.net/latex-for-logicians/
            Poiché tuttavia devo entrare in modalità matematica
            per avere i simboli che mi servono, le variabili che in genere
            sono lettere (ad esempio, in uno dei casi più elementari,
            $ p \leftrightarrow q$) risultano in “corsivo matematico”.
            Come posso impostarle stabilmente in tondetto,
            secondo l’uso, senza dover scrivere decine di volte \mathrm?

            m

          • #84836
            OldClaudio
            Partecipante
              Up
              0
              Down
              ::


              Per esempio `p${}\leftrightarrow{}$q`
              I due gruppi vuoti servono per mantenere attorno al simbolo logico gli spazi necessari; se però metti degli spazi far p e il dollaro di apertura e fra il dollaro di chiusura e q non hai bisogno dei gruppo vuoti.

              Volendo ti potresti scrivere un comando \logsimb del tipo`\newcommand*\logsimb[1]{\unskip${}#1{}$\ignorespaces}`così da immettere nel tuo testo`p \logsimb{\leftightarrow} q` così da non doverti preoccupare di entrare e uscire dal modo matematico, mettere o non mettere i gruppi vuoti, lasciare o non lasciare spazi fra il simbolo logico e gli operandi. Ovviamante invece di \logsimb puoi usare un nome più corto, tipo [tt]\LS[/tt].

            • #84837
              samiel
              Partecipante
                Up
                0
                Down
                ::


                Grazie dell’indicazione. Mi resta un problema.
                Le formule sono a volte numerate o comunque indicate
                con specifiche sigle, come nell’esempio allegato
                nel mio primo post. Ora, l’ambiente equation
                consente in automatico una numerazione.
                In che modo posso realizzare allo stesso modo
                automaticamente una numerazione a volte costituita
                da indicazionip articolari, come nel mio esempio D2?

                m

              • #84838
                OldClaudio
                Partecipante
                  Up
                  0
                  Down
                  ::


                  Non puoi avere la moglie ubriaca e la botte piena, come diceva il vecchio proverbio.

                  Mi pare di avere visto fra le collezioni di pacchetti strani che arrivano con la distribuzione TeX Live un pacchetto che accettava una opzione per scrivere tutta la matematica in tondo; siccome non ricordo più quale fosse, la cosa mi sembra impossibile, ciò scrivere formule numerate o non numerate, ma con le variabili in tondo. In realtà ho trovato quello che cercavo e puoi andare a leggere più avanti.

                  Per le equazioni etichettate come ti pare usa il pacchetto amsmath: l’ambiente equation* NON numera le equazioni; l\lambiente equation le numera con dei numeri, però se usi il comando \tag{…} puoi inserire l’etichetta che vuoi; \notag dentro equation elimina ogni etichettatura anche numerica. Quindi
                  `
                  \begin{equation*}
                  p \leftrightarrow q
                  \end{equation*}
                  bla bla
                  \begin{equation}
                  p \leftrightarrow q
                  \label{equ:coimplicazione}
                  \end{equation}
                  bla bla
                  \begin{equation}
                  p \leftrightarrow q \tag{D1}
                  \label{equ:D1}
                  \end{equation}
                  `
                  ti permettono di scrivere (con le variabili in corsivo) una equazione logica non numerata, una equazione logica numerata, una equazione logica etichettata; puoi usare i comandi \label, \ref e \eqref (quest’ultimo definito da amsmath, racchiude l’etichetta numerica o alfanumerica fra parentesi tonde; \ref, invece, riproduce solo il numero o l’etichetta assegnata).

                  Usare contemporaneamente equazioni numerate ed etichettate, e contemporaneamente usare il pacchetto hyperref può dare dei problemi.

                  [EDIT: aggiunta la questione della matematica composta tutta upright]
                  Il pacchetto isomath dice che gli stili di composizione della matematica sono quattro: TeX, ISO, French e upright; in quest’ultimo tutte le lettere sono composte in tondo; La documentazione di isomath dice che lo stile upright si può ottenere con i pacchetti eulervm, lucimathx e unicode-math.

                  Unicode-math è solo per XeLaTeX; l’opzione data al pacchetto mediante il comando [tt]\unimathsetup{math-style=upright][/tt] dopo avere caricato il pacchetto unicode-math, dovrebbe essere sufficinete; la documentazione di unicode-math mostra questo risultato nella tabelle 3 della pagina 7.
                  Componendo con XeLaTeX, quindi, saresti a cavallo.

                  Per comporre con pdfLaTeX, invece, le cose stanno come racconto qui appresso.

                  Ho esaminato la documentazione del pacchetto lucimathx (che si può leggere, apaprentemente, solo in rete all’indirizzolucimatx; letta la documentazione scopro che è falso che questo pacchetto possa realizzare lo stile upright per tutta la matematica.

                  Non resta che il pacchetto eulervm (texdoc eulervm); in realtà questo pacchetto ralizza solo lo stile upright, perché i font matematici Euler sono diritti di per se: sono diversi dai font per il testo, quindi anche scrivendo di logica si riconosce che non sono presi dalla collezione dei font di testo e sono in una stile che ricorda il modo di scrivere sulla lavagna, con una specie di corsivo slegato, quindi non la forma tonda. Sono i font della matematica dell’Arte di scrivere con LaTeX, che conosci bene, e aprendo l’Arte puoi vedere bene cosa intendo per font upright, che non vuol dire font tondo.

                  Il problema con la matematica è che il cambio di font è una operazione molto più complicata che il cambio di font in modo testuale. Questo è dovuto al fatto che in matematica non si ragiona in termini di codifica, famiglia, serie e forma, com per il testo; ma ognuna delle possibili combinazioni di queste quattro caratteristiche forma un gruppo matematico a se stante; TeX, pdftex, e tutte le loro varianti congiunte a formati diversi (un formato è la collezione di macro di un particolare mark up già tradotte in linguaggio macchina — in buona sostanza quando esegui pdflatex in realtà lanci pdftex con il formato pdflatex.fmt) possono usare al massimo 16 gruppi matematici; quello che occorrerebbe in matematica con tutte le varianti di stile che vengono richieste dai vari compositori per soddisfare certe norme o certe consuetudini, fanno si che 16 gruppi possano non essere sufficienti. Ci sarebbero diverse vie per ovviare a questi inconvenienti; ci sto lavorando sopra, ma prima di avere risultati usabili potrebbero volerci mesi; sono appena all’inizio e devo ancora capire molte cose, in particolare sulle varianti richieste e necessarie; non intendo cambia i programmi di composizione, ma i font; che oggi come oggi sono ancora legati al modo con cui veniva f=composta la matematica con LaTeX 209 prima del 1994. Un procedimento a suo modo avanzatissimo, ma di fatto oggi un po’ limitato.

                • #84839
                  samiel
                  Partecipante
                    Up
                    0
                    Down
                    ::


                    Hai messo davvero molta carne al fuoco e ti ringrazio.
                    Il fatto che componendo con Xelatex si risolva è molto interessante.
                    Per quanto riguarda la composizione con pdflatex, dammi un po’ di tempo per capire e soprattutto provare.
                    In ogni caso, già con le altre indicazioni ho fatto indiscutibili passi avanti.
                    Ho visto inoltre che esistono parecchi pacchetti (alcuni però piuttosto vecchi)
                    per svariate esigenze di logica. Le mie sono abbastanza elementari, in ogni caso.
                    Adesso vedo un po’ di manuali di logica per capire se c’è piena uniformità
                    nelle convenzioni tipografiche…
                    m

                  • #84840
                    samiel
                    Partecipante
                      Up
                      0
                      Down
                      ::


                      Ho compilato anche con Xelatex, ma nella mia radicale ignoranza matematica
                      ho un problema coi pedici. COn pdflatex tutto funziona con la stringa
                      p \leftrightarrow q \tag{D\ped 1}
                      Poiché tuttavia mi pare che \ped non funzioni con Xelatex, ho modificato il codice:
                      `\begin{equation*}
                      p \leftrightarrow q
                      \end{equation*}
                      bla bla
                      \begin{equation}
                      p \leftrightarrow q
                      \label{equ:coimplicazione}
                      \end{equation}
                      bla bla
                      \begin{equation}
                      p \leftrightarrow q \tag{D_1}
                      \label{equ:D_1}
                      \end{equation}`
                      Solo che ricevo errore:
                      `! Missing $ inserted.

                      $
                      l.194 \end{equation}`
                      La riga incriminata è appunto quella col pedice; una volta tolto,
                      la compilazione va a buon fine…

                      m

                    • #84841
                      OldClaudio
                      Partecipante
                        Up
                        0
                        Down
                        ::


                        \ped e \ap sono delle estensioni dell’opzione italian di babel; non sono incluse in polyglossia.
                        Puoi metterti le tue definizioni, però:`
                        \providecommand*\ap[1]{\textormath{\textsuperscript{#1}}{_{\mathrm{#1}}}}
                        \providecommand*\ped[1]{\textormath{\textsubscript{#1}}{^{\mathrm{#1}}}}`
                        In queste definizioni ho usato \providecommand così lo puoi usare sia con pdflatex con l’opzione italian (\ped e \ap già definiti) sia con xelatex e l’opzione italian di polyglossia (\ped a \ap non definiti).

                        L’errore che ricevi usando _ nel \tag è che questo argomento non viene composto in modo matematico, anche se il \tag si trova dentro l’ambiente equation.

                      • #84842
                        samiel
                        Partecipante
                          Up
                          0
                          Down
                          ::


                          Tuttavia
                          `\documentclass[a4paper,12pt]{article}
                          \usepackage[T1]{fontenc}
                          \usepackage{fontspec}
                          \usepackage{amsmath}
                          \usepackage[math-style=upright]{unicode-math}
                          \setmainfont[Ligatures=TeX]{TeX Gyre Pagella}
                          \setmathfont{Asana Math}
                          \usepackage{polyglossia}
                          \setmainlanguage{italian}
                          \usepackage{microtype}
                          %\newcommand\ap[1]{\textormath{\textsuperscript{#1}}{^{\mathrm{#1}}}}
                          %\newcommand\ped[1]{\textormath{\textsubscript{#1}}{_{\mathrm{#1}}}}
                          \providecommand*\ap[1]{\textormath{\textsuperscript{#1}}{_{\mathrm{#1}}}}
                          \providecommand*\ped[1]{\textormath{\textsubscript{#1}}{^{\mathrm{#1}}}}

                          \begin{document}

                          \begin{equation*}
                          p \leftrightarrow q
                          \end{equation*}
                          bla bla
                          \begin{equation}
                          p \leftrightarrow q
                          \label{equ:coimplicazione}
                          \end{equation}
                          bla bla
                          \begin{equation}
                          p \leftrightarrow q \tag{D\ped{2}}
                          \label{equ:D\ped{2}}
                          \end{equation}

                          \end{document}}`
                          mi dà errore:
                          `
                          ! Missing \endcsname inserted.

                          \bgroup
                          l.8 …qu:D^{\mathup {2}}}{{{D^{\mathup {2}}}}{1}}

                          ?

                          `
                          Impossibile avere il pedice anche in label?

                          m

                        • #84843
                          alegenn
                          Partecipante
                            Up
                            0
                            Down
                            ::


                            Da quel che posso capire l’errore sta nell’uso di [tt]\ped[/tt] all’interno della [tt]\label[/tt], nell’attesa che gli esperti ci spieghino il perché, visto che l’etichetta puoi definirla come vuoi puoi usare il seguente codice, che non presenta quell’errore:
                            `\documentclass[a4paper,12pt]{article}
                            \usepackage[T1]{fontenc}
                            \usepackage{fontspec}
                            \usepackage{amsmath}
                            \usepackage[math-style=upright]{unicode-math}
                            \setmainfont[Ligatures=TeX]{TeX Gyre Pagella}
                            \setmathfont{Asana Math}
                            \usepackage{polyglossia}
                            \setmainlanguage{italian}
                            \usepackage{microtype}
                            %\newcommand\ap[1]{\textormath{\textsuperscript{#1}}{^{\mathrm{#1}}}}
                            %\newcommand\ped[1]{\textormath{\textsubscript{#1}}{_{\mathrm{#1}}}}
                            \providecommand*\ap[1]{\textormath{\textsuperscript{#1}}{_{\mathrm{#1}}}}
                            \providecommand*\ped[1]{\textormath{\textsubscript{#1}}{^{\mathrm{#1}}}}

                            \begin{document}

                            \begin{equation*}
                            p \leftrightarrow q
                            \end{equation*}
                            bla bla
                            \begin{equation}
                            p \leftrightarrow q
                            \label{equ:coimplicazione}
                            \end{equation}
                            bla bla
                            \begin{equation}
                            p \leftrightarrow q \tag{D\ped{2}}
                            \label{equ:$D_2$}
                            \end{equation}

                            \end{document}}`

                          • #84844
                            samiel
                            Partecipante
                              Up
                              0
                              Down
                              ::


                              Infatti l’errore sta lì, basta eliminare iil pedice e tutto funziona.
                              Ma perché prima funziona e poi no? Mistero….

                              m

                            • #84845
                              OldClaudio
                              Partecipante
                                Up
                                0
                                Down
                                ::


                                Credevo di avertelo spiegato che che la cosa si commentasse da sola leggendo le definizioni di due coamndi \ap e \ped che ti avevo allegato;

                                \ped e \ap sono definiti se usi pdflatex, babel e l’opzione italian; se scrivi in qualunque altra lingua non sino definiti. \ap e \ped distinguono se sei in modo matematico o in modo testo.

                                Con xelatex, polyglossia e l’impostazione della lingua italian, \ap e \ped non sono definiti; se non li definisci come ti ho mostrato, e usi l’underscore per usare il pedice, l’underscore funziona solo in matematica; \tag compone la sua etichetta in modo testo che verrà usata in modo testo. quindi _ è usato fuori del suo contesto corretto.

                                Le definizioni che ti ho dato con \providecommand distinguono se sei in modo testo o in modo matematico; se sei in modo testo non usano rispettivamente né ^ per l’apice né _ per il pedice. ma usano i comandi testuali (lo dice il nome) \textsuperscript e \textsubscript che alzano o abbassano rispettivamente quanto deve essere messo ad apice o a pedice e ne aggiustano il corpo, ma lavorando sempre in modo testuale.
                                Se sui xelatex, polyglossia, italian, e togli il pedice, si sa che funziona; e lo fa prorpio perché togli il segno fuori sel suo contesto. Non c’è nessun mistero, ma è di una chiarezza lampante.

                              • #84846
                                samiel
                                Partecipante
                                  Up
                                  0
                                  Down
                                  ::


                                  C’è qualcosa che continua a sfuggirmi. Il problema non è \tag, bensì \label.
                                  Prendiamo questo esempio:
                                  `\documentclass[a4paper,12pt]{article}
                                  \usepackage[T1]{fontenc}
                                  \usepackage{fontspec}
                                  \usepackage{amsmath}
                                  \usepackage[math-style=upright]{unicode-math}
                                  \setmainfont[Ligatures=TeX]{TeX Gyre Pagella}
                                  \setmathfont{Asana Math}
                                  \usepackage{polyglossia}
                                  \setmainlanguage{italian}
                                  \usepackage{microtype}

                                  %\newcommand\ap[1]{\textormath{\textsuperscript{#1}}{^{\mathrm{#1}}}}
                                  %\newcommand\ped[1]{\textormath{\textsubscript{#1}}{_{\mathrm{#1}}}}

                                  \providecommand*\ap[1]{\textormath{\textsuperscript{#1}}{^{\mathrm{#1}}}}
                                  \providecommand*\ped[1]{\textormath{\textsubscript{#1}}{_{\mathrm{#1}}}}

                                  %\newcommand{\superscript}[1]{\ensuremath{^{\textrm{#1}}}}
                                  %\newcommand{\subscript}[1]{\ensuremath{_{\textrm{#1}}}}

                                  %\makeatletter
                                  %\newcommand\textsubscript[1]{\@textsubscript{\selectfont#1}}
                                  %\def\@textsubscript#1{{\m@th\ensuremath{_{\mbox{\fontsize\sf@size\z@#1}}}}}
                                  %\newcommand\textbothscript[2]{%
                                  % \@textbothscript{\selectfont#1}{\selectfont#2}}
                                  %\def\@textbothscript#1#2{%
                                  % {\m@th\ensuremath{%
                                  % ^{\mbox{\fontsize\sf@size\z@#1}}%
                                  % _{\mbox{\fontsize\sf@size\z@#2}}}}}
                                  %\def\@super{^}\def\@sub{_}
                                  %
                                  %\catcode`^\active\catcode`_\active
                                  %\def\@super@sub#1_#2{\textbothscript{#1}{#2}}
                                  %\def\@sub@super#1^#2{\textbothscript{#2}{#1}}
                                  %\def\@@super#1{\@ifnextchar_{\@super@sub{#1}}{\textsuperscript{#1}}}
                                  %\def\@@sub#1{\@ifnextchar^{\@sub@super{#1}}{\textsubscript{#1}}}
                                  %\def^{\let\@next\relax\ifmmode\@super\else\let\@next\@@super\fi\@next}
                                  %\def_{\let\@next\relax\ifmmode\@sub\else\let\@next\@@sub\fi\@next}
                                  %\makeatother

                                  \begin{document}

                                  \begin{equation*}
                                  p \leftrightarrow q
                                  \end{equation*}
                                  bla bla
                                  \begin{equation}
                                  p \leftrightarrow q
                                  \label{equ:coimplicazione}
                                  \end{equation}
                                  bla bla
                                  \begin{equation}
                                  p \leftrightarrow q \tag{D\ped2}
                                  %\label{equ:D\ped2}
                                  \end{equation}

                                  x\ap2

                                  x\ped2

                                  $x\ap2$

                                  $x\ped2$

                                  \end{document}`
                                  Se commento la riga \label, tutto funziona correttamente. Il comando \ped
                                  individua se la modalità è o non è matematica, e usa dietro il sipario _ oppure \textsubscript.
                                  Infatti il risultato è corretto. Ma se decommento \label, allora ottengo:
                                  `! Missing \endcsname inserted.

                                  \bgroup
                                  l.8 …qu:D_{\mathup {2}}}{{{D_{\mathup {2}}}}{1}}

                                  ? `
                                  E qualsiasi stringa io inserisca in \label per il pedice, mi dà errore

                                  m

                                • #84847
                                  OldClaudio
                                  Partecipante
                                    Up
                                    0
                                    Down
                                    ::


                                    Invece di \providecommand prova ad usare \DeclareRobustCommand

                                    La spiegazione di quel che è successo è che \providecommand definisce un comando, ma è un comando fragile che viene sviluppato al momento sbagliato.

                                  • #84848
                                    samiel
                                    Partecipante
                                      Up
                                      0
                                      Down
                                      ::


                                      Niente da fare:
                                      `! Missing \endcsname inserted.

                                      \protect
                                      l.8 \newlabel{equ:D\ped 2}{{{D\ped 2}}{1}}`

                                      m

                                    • #84849
                                      OldClaudio
                                      Partecipante
                                        Up
                                        0
                                        Down
                                        ::


                                        Questo codice a me funziona benissimo`% !TEX encoding = UTF-8 Unicode
                                        % !TEX TS-program = XeLaTeX

                                        \documentclass[a4paper,12pt]{article}
                                        \usepackage[T1]{fontenc}
                                        \usepackage{fontspec}
                                        \usepackage{amsmath}
                                        \usepackage[math-style=upright]{unicode-math}
                                        \setmainfont[Ligatures=TeX]{TeX Gyre Pagella}
                                        \setmathfont{Asana Math}
                                        \usepackage{polyglossia}
                                        \setmainlanguage{italian}
                                        \usepackage{microtype}
                                        \DeclareRobustCommand*\ap[1]{\textormath{\textsuperscript{#1}}{_{\mathrm{#1}}}}
                                        \DeclareRobustCommand*\ped[1]{\textormath{\textsubscript{#1}}{^{\mathrm{#1}}}}

                                        \begin{document}

                                        \begin{equation*}
                                        p \leftrightarrow q
                                        \end{equation*}
                                        bla bla
                                        \begin{equation}
                                        p \leftrightarrow q
                                        \label{equ:coimplicazione}
                                        \end{equation}
                                        bla bla
                                        \begin{equation}
                                        p \leftrightarrow q \tag{D\ped{2}}
                                        \label{equ:D_2}
                                        \end{equation}
                                        L'equazione~\eqref{equ:D_2} dice che\dots
                                        \end{document}}`

                                        Nel file .aux il label è registrato come:`\newlabel{equ:D_2}{{{D\ped {2}}}{1}}` che è identico a quanto tu riporti nel tuo messaggio. Dunque non è chiaro dove sia l’inghippo.

                                      • #84850
                                        Up
                                        0
                                        Down
                                        ::

                                        samiel” post=84632C’è qualcosa che continua a sfuggirmi. Il problema non è \tag, bensì \label.
                                        Prendiamo questo esempio:
                                        `\documentclass[a4paper,12pt]{article}
                                        \usepackage[T1]{fontenc}
                                        \usepackage{fontspec}
                                        \usepackage{amsmath}
                                        \usepackage[math-style=upright]{unicode-math}
                                        \setmainfont[Ligatures=TeX]{TeX Gyre Pagella}
                                        \setmathfont{Asana Math}
                                        \usepackage{polyglossia}
                                        \setmainlanguage{italian}
                                        \usepackage{microtype}

                                        %\newcommand\ap[1]{\textormath{\textsuperscript{#1}}{^{\mathrm{#1}}}}
                                        %\newcommand\ped[1]{\textormath{\textsubscript{#1}}{_{\mathrm{#1}}}}

                                        \providecommand*\ap[1]{\textormath{\textsuperscript{#1}}{^{\mathrm{#1}}}}
                                        \providecommand*\ped[1]{\textormath{\textsubscript{#1}}{_{\mathrm{#1}}}}
                                        `
                                        E qualsiasi stringa io inserisca in \label per il pedice, mi dà errore

                                        Più propriamente
                                        `\providerobustcmd*\ap[1]{\textormath{\textsuperscript{#1}}{^{\mathrm{#1}}}}
                                        \providerobustcmd*\ped[1]{\textormath{\textsubscript{#1}}{_{\mathrm{#1}}}}`
                                        oppure, ancora più semplicemente,
                                        `\providerobustcmd\ap{\ifmmode^\expandafter\mathrm\else\expandafter\textsuperscript\fi}
                                        \providerobustcmd\ped{\ifmmode^\expandafter\mathrm\else\expandafter\textsubscript\fi}`
                                        Naturalmente occorre definire [tt]\textsubscript[/tt] (lo fa fixltx2e); [tt]\providerobustcmd[/tt] è di etoolbox caricato da polyglossia.

                                        Lascio agli amanti dell’esegesi la spiegazione del codice più semplice. 😉

                                        Ciao
                                        Enrico

                                      • #84851
                                        Up
                                        0
                                        Down
                                        ::


                                        Chiedo scusa, ma non capisco una cosa. C’è un vero motivo per dover scrivere una formula in un’etichetta o è solo un esercizio di erudizione?

                                        Ciao
                                        Tommaso

                                      • #84852
                                        OldClaudio
                                        Partecipante
                                          Up
                                          0
                                          Down
                                          ::


                                          Non credo che @samiel si diverta a mettere label formati da espressioni matematiche; sta semlicemente cercando di vedere se riesce a riprodurre qualcosa che ha trovato su qualche altro testo di logica.
                                          Poi l’esercizio è diventato una specie di romanzo giallo dove bisogna trovare l’assassino.

                                          La mia soluzione funziona benissimo; quella di Enrico anche. La differenza sta essenzialmente nel fatto che io uso la roustificazione mediante il metodo LaTeX, mentre Enrico usa la robustificazione con il metodo di etoolbox.

                                          Nella soluzione di Enrico con il test \ifmmode e gli \expandafter del caso, non viene passato nessuna argomento ai comandi \ap o \ped che restano in lista d’attesa per essere poi elaborati in un secondo tempo; sostanzialmente \textormath fa le stesse cose, in modo un filino più complesso (passando attraverso i comandi di babel \bbl@afterelse e \bbl@afterfi (che sono definiti anche in polyglossia} ma, anche se diverse in pratica, concettualmente si tratta delle stesse cose.

                                          L’assasino del giallo è stato trovato; ora @samiel sa esattamente perché a lui le cose non venivano e per me è stato divertente scoprire che una cosa che ho usato per una ventina d’anni senza problemi è una questione di pura fortuna, dovuta al fatto che non ho mai messo etichette con espressioni matematiche e quindi i comandi \ap e \ped non hanno mai avuto occasione di mostrare la loro fragilità.

                                          Ciao
                                          Claudio

                                        • #84853
                                          samiel
                                          Partecipante
                                            Up
                                            0
                                            Down
                                            ::


                                            So che le etichette non hanno alcun bisogno di apici o pedici,
                                            e che potrebbero essere chiamante anche “topolino” o “pippo”.
                                            Dal momento però che in quel file avevo attribuito loro la stessa stringa
                                            della numerazione, mi aveva incuriosito capire perché la cosa non funzionava.
                                            In realtà il giallo ha avuto un’appendice singolare. Ho confrontato
                                            il mio codice con quello di OldClaudio, poi ho ricompilato cancellando
                                            i file ausiliari. Ebbene, a questo punto ho ottenuto un messaggio
                                            che mi diceva che era impossibile salvare il file logica.pdf (nato
                                            dalla composizione di logica.tex) con quel nome, e mi proponeva
                                            di attribuirgli un altro nome. Mi spiace di non aver registrato quel messaggio.
                                            Ma qualsiasi nome alternativo proponessi, il problema si riproponeva.
                                            Non sapendo come uscirne, ho addirittura riavviato il computer
                                            e finalmente la compilazione è andata a buon fine. Altro mistero per me!
                                            A questo punto in ogni caso il problema è risolto. Grazie a OldClaudio
                                            per avermi seguito passo passo e a Enrico per il codice alternativo

                                            m

                                          • #84854
                                            alegenn
                                            Partecipante
                                              Up
                                              0
                                              Down
                                              ::

                                              OldClaudio” post=84675Non credo che @samiel si diverta a mettere label formati da espressioni matematiche; sta semlicemente cercando di vedere se riesce a riprodurre qualcosa che ha trovato su qualche altro testo di logica.
                                              Poi l’esercizio è diventato una specie di romanzo giallo dove bisogna trovare l’assassino.

                                              La mia soluzione funziona benissimo; quella di Enrico anche. La differenza sta essenzialmente nel fatto che io uso la roustificazione mediante il metodo LaTeX, mentre Enrico usa la robustificazione con il metodo di etoolbox.

                                              Nella soluzione di Enrico con il test \ifmmode e gli \expandafter del caso, non viene passato nessuna argomento ai comandi \ap o \ped che restano in lista d’attesa per essere poi elaborati in un secondo tempo; sostanzialmente \textormath fa le stesse cose, in modo un filino più complesso (passando attraverso i comandi di babel \bbl@afterelse e \bbl@afterfi (che sono definiti anche in polyglossia} ma, anche se diverse in pratica, concettualmente si tratta delle stesse cose.

                                              L’assasino del giallo è stato trovato; ora @samiel sa esattamente perché a lui le cose non venivano e per me è stato divertente scoprire che una cosa che ho usato per una ventina d’anni senza problemi è una questione di pura fortuna, dovuta al fatto che non ho mai messo etichette con espressioni matematiche e quindi i comandi \ap e \ped non hanno mai avuto occasione di mostrare la loro fragilità.

                                              Ciao
                                              Claudio

                                              Ora ho capito pure io 😆
                                              Ricordo di aver letto da qualche parte che uno degli obiettivi di LaTex3 è quello di eliminare (tutti o quanti più possibile) comandi fragili, ricordo male o ciò corrisponde al vero?
                                              Grazie a tutti per le spiegazioni, anche a me non era mai capitato di definire etichette attraverso espressioni matematiche, ma è sempre bene capire cosa si cela dietro le quinte!
                                              Saluti

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

                                          Go to top