Errore comando \micro in \unit{} toptesi

  • Creatore
    Topic
  • #76544
    Up
    0
    Down
    ::


    Salve a tutti,

    Sto componendo la tesi con pdfLaTeX con la classe TOPtesi e, quando provo a usare il comando \micro all’interno del comando \unit (ad esempio: `150\unit{\micro s}`), ottengo il seguente messaggio:

    `Extra \else.
    \textormath #1#2->ifmmode \bbl@afterelse #2\else
    \\bbl@afterfi #1\fi`

    Qualche idea?
    Utilizzo TeX Live su Mac OS X

    Grazie in anticipo 🙂
    Daniele

Visualizzazione 8 filoni di risposte
  • Autore
    Risposte
    • #76545
      franen
      Partecipante
        Up
        0
        Down
        ::


        Benvenuto!`\documentclass{toptesi}
        \begin{document}
        tempo: 12\unit{\micro s}
        \end{document}`a me funziona. Dovresti dirci qualcosa in più, anzi, come da netiquette, scriverci un esempio minimo compilabile che riproduca l’errore.
        Magari Claudio sa darti una risposta anche così, ma noi altri che non abbiamo scritto toptesi…
        Francesco

      • #76546
        Up
        0
        Down
        ::


        Grazie!
        Hai ragione, infatti se lo avessi fatto prima mi sarei accorto che il problema sembra essere relativo all’utilizzo della lingua inglese. Il seguente codice:

        `
        \documentclass{toptesi}
        \begin{document}
        \english
        prova 150\unit{\micro s}
        \end{document}
        `

        riproduce l’errore.

        Daniele

      • #76547
        franen
        Partecipante
          Up
          0
          Down
          ::


          È già un passo avanti. Ho provato a guardare cosa fa \english, ma non sono riuscito a trovare nulla che giustifichi l’errore. Mi spiace.
          Son certo che Claudio saprà dirti qualcosa di più!

          Francesco

        • #76548
          Up
          0
          Down
          ::

          danieleg” post=75719Grazie!
          Hai ragione, infatti se lo avessi fatto prima mi sarei accorto che il problema sembra essere relativo all’utilizzo della lingua inglese. Il seguente codice:

          `
          \documentclass{toptesi}
          \begin{document}
          \english
          prova 150\unit{\micro s}
          \end{document}
          `

          riproduce l’errore.

          Daniele

          Dando [tt]\english[/tt] la definizione di [tt]\unit[/tt] cambia. Ti suggerisco di usare il pacchetto siunitx; altrimenti, aggiungi
          `\makeatletter
          \addto\extrasenglish{\let\unit\bbl@unit}
          \makeatother`
          al tuo preambolo.

          Ciao
          Enrico

        • #76549
          OldClaudio
          Partecipante
            Up
            0
            Down
            ::


            Mi spiace che l’errore principale nonn è in toptesi, ma è nella definizione del pacchetto di descrizione della lingua italiana italian.ldf. In realtà il file di descrizione della lingua italiana funziona bene anche con \unit, e il suo patch per non interferire con la definizione dell’omonimo commento del vecchio pacchetto SIunits. Toptesi usa quel che c’è e la riparazione indicata da Enrico funziona perfettamente con l’inglese, ma se poi si volesse fare la tesi in francese, la cosa non funzionerebbe più. ora vedo di mettere un riparo a toptesi, ma mi civorrà un po’ di tempo.
            e|E nel frattempo aggiungi quelle tre righe di Enrico se stati scrivendo al tesi in inglese; se la stati scrivendo in un’altra lingua, aggiungi altre tre righe sostituendo “english” senza virgolette con il nome che babel usa per invocare quell’altra lingua.
            Io da parte mia spero di poter realizzare una correzione che vada bene per tutte le lingue. Non mi sembra complicato, ma mi sembra delicato.

            Scusami
            Claudio

            [edit] La correzione è stata più semplice del previsto; il pacchetto, ora alla versione 5.60 è già stato caricato su CTAN, a giorni sarà disponibile nella distribuzione di TeX Live.

            Nel frattempo copiati texcoman.sty nella cartella dove stai lavorando il documento della tua tesi; apriloe cerca la definizione di \textormath; dovrebbe essere alla riga 49. Ora sostituisci `\providecommand{\textormath}{\ifmmode\expandafter\@secondoftwo\else
            \expandafter\@firstoftwo\fi`
            con`
            \providecommand\textormath{}
            \renewcommand{\textormath}{\ifmmode\expandafter\@secondoftwo\else
            \expandafter\@firstoftwo\fi}`

            È il \providecommand che non permette di ridefinire il comando \textormath se esiste già; e siccome esiste già, definito da babel, è chiaro che la definizione mia non può avere luogo. Invece usando prima un \providecommand che inserisce nell’elenco delle macro anche \textormath, nel caso che non ci fosse ancora, ma poi lo ridefinisce subito (che ci fosse già stato o che sia stato aggiunto or ora) nel modo corretto che non fa riferimento ai comandi di babel che sono fragili in certe circostanze.

            Le tre righe di Enrico, benché efficaci per l’inglese, non sono più necessarie.

            Poi apportare la modifica suddetta al file topcoman sul tuo disco, ma non cambiare quella che si trova nelle cartelle di sistema; al prossimo aggiornamento le cartelle di sistema verranno regolarmente aggiornate e potrai cancellare dalla tua cartella la copia che ti sei fatto.

          • #76550
            Up
            0
            Down
            ::


            Grazie mille!

            La modifica al file topcoman.sty risolve l’errore, ma ho notato che il carattere \micro non risulta in tondo ma in corsivo.
            Confermate o problema mio? 🙂

            Segnalo per completezza che la soluzione proposta da Enrico funziona, ma l’errore si riproduce se \micro viene utilizzato tra i delimitatori per le formule $…$

            EDIT: il carattere \micro e’ in corsivo solo se usato dopo \english, e’ correttamente in tondo se la lingua e’ italiana.

          • #76551
            OldClaudio
            Partecipante
              Up
              0
              Down
              ::


              La cosa che tu lamenti dipende solo parzialmente da toptesi; dipende anche dai font che usi; forse dovrei modificare la definizione di \micro in topcoman.sty, ma sono indeciso; da una parte in modo testo, se si usa pdflatex, viene impiegato il segno fornito dal comando \textmicro del pacchetto textcomp, mentre in matematica si usa il \mu inclinato o il \muup matematico diritto a seconda che sia o non sia disponibile con i font usati; per esempio se invece dei font di default tu usassi i font forniti dal pacchetto txfonts, o quelli forniti dal pacchetto pxfonts, vedresti in modo matematico il μ diritto ma senza le grazie al piede, mentre in modo testo vedresti le grazie al piede; sono due segni μ diversi, come lo sono generalmente i font in matematica (specialmente i corsivi) rispetto a quelli del modo testo.
              Può darsi che questo sia un errore, comunque a me pare che sia corretto così.

              Con xelatex, invece si usano altri font che presentano i segno μ sempre diritto e senza grazie sia in modo testo sia in modo matematico; la cosa sembra più coerente, ma dipende dai font a cui si può accedere con l’uno l’altro programma di composizione.

              Se vuoi modificare il modo di comporre il segno della lettera μ quando componi con pdflatex e li vuoi entrambi con le grazie, allora cerca il file topcoman.sty e copialo nella tua cartella di lavoro della tua tesi; poi apri questa copia di topcoman.sty, cerca la definizione di \micro e scrivici dopo`\renewcommand\micro{\textormath{\textmu}{\ifxetex\mathup{μ}\else
              \mathpalette{}{\mbox{\textmu}}\fi}}`.

              Questo dovrebbe risolvere il tuo problema. Io non so se modificherò toptesi con questa variante; se e quando aggiornando la tua versione di TeX Live troverai che fra i pacchetti aggiornati ci sarà di nuovo toptesi, allora, forse, vorrà dire che oltre ad altre modifiche io abbia introdotto anche questa. Se hai qualche argomento per convincermi subito, “parla subito o taci per sempre” 😉
              Se hai delle altre proposte di modifiche o correzioni, sono sempre attento e ben lieto che ci siano delle critiche costruttive ai miei pacchetti. Ti ringrazio in anticipo.

              Ciao
              Claudio

            • #76552
              Up
              0
              Down
              ::


              Perfetto, la soluzione proposta risolve il mio problema.
              Grazie per l’aiuto e per l’ottimo lavoro svolto con TOPtesi 🙂

              Non saprei se consigliare la modifica del pacchetto o meno, perche’ non sono in grado di valutare eventuali conseguenze “indesiderate” che questa soluzione potrebbe comportare.

              Un saluto,
              Daniele

            • #76553
              Up
              0
              Down
              ::

              OldClaudio” post=75775Se vuoi modificare il modo di comporre il segno della lettera μ quando componi con pdflatex e li vuoi entrambi con le grazie, allora cerca il file topcoman.sty e copialo nella tua cartella di lavoro della tua tesi; poi apri questa copia di topcoman.sty, cerca la definizione di \micro e scrivici dopo`\renewcommand\micro{\textormath{\textmu}{\ifxetex\mathup{μ}\else
              \mathpalette{}{\mbox{\textmu}}\fi}}`

              [tt]\mathpalette{}{\mbox{\textmu}}[/tt] è sbagliato: si espande a
              `\mathchoice{\displaystyle\mbox{\textmu}}{\textstyle\mbox{\textmu}}{\scriptstyle\mbox{\textmu}}{\scriptscriptstyle\mbox{\textmu}}`
              che non fa cambiare grandezza al carattere.

              Se carichi amsmath, basta [tt]\text{\textmu}[/tt].

              Ciao
              Enrico

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

          Go to top