sillabazione

  • Creatore
    Topic
  • #122322
    ernded
    Partecipante
      Up
      0
      Down
      ::


      È possibile fare in modo che LaTeX sillabi automaticamente anche l’eventuale testo presente in una macro. Per esempio se è
      \newcommand{\spv}{spazio vettoriale euclideo}
      non mi divide in sillabe e devo indicare la sillabazione nella macro.
      C’è qualche trucco per evitarlo?
      Grazie
      Ernesto

    Visualizzazione 7 filoni di risposte
    • Autore
      Risposte
      • #122323
        OldClaudio
        Partecipante
          Up
          0
          Down
          ::


          No, LaTeX non esegue la cesura in fin di riga nele parole di un codice, in particolare se quel codice è scritto dentro un ambiente verbatim.; imoltre LATeX non esegue la cesura nemmeno quando si scrive usando il comando monospaziato teletype (da cui la sigla tt, la dichiarazione \ttfamily, il comando \texttt).
          Quindi o continui a fare quello che hai già fatto inserendo \- nel punto in cui vuoi eseguire una cesura, oppure metti quel codice in una riga a se stante; all’interno di altre righe di codice puoi tranquillamente andare a capo prima del tuo codice, magari, se fosse necessario, mettendo un segno % alla fine della riga precedente

        • #122324
          mcl1962
          Partecipante
            Up
            0
            Down
            ::


            Con il seguente codice io ottengo la sillabazione:

            `
            \documentclass[10pt,a4paper]{article}
            \usepackage[utf8]{inputenc}
            \usepackage[italian]{babel}

            \newcommand{\spv}{spazio vettoriale euclideo}

            \begin{document}
            Ammettiamo che sia data l'applicazione lineare tra lo \spv{} eccetera

            Ammettiamo che sia data una facile applicazione lineare tra lo \spv{} eccetera

            Ammettiamo che non sia data una facilissima applicazione lineare tra uno~\spv{} eccetera
            \end{document}
            `

            Non è che magari hai dimenticato di specificare una lingua?

            Ciao.

            Claudio

          • #122325
            OldClaudio
            Partecipante
              Up
              0
              Down
              ::


              Non specificare una lingua vuol dire usare la lingua di default che è l’inglese. Se fosse solo una questione di lingua le parole italiane risulterebbero divise in modo strano, ma sarebbero divise comunque. La presenza del testo sostitutivo del comando \spv non modifica le cose.

            • #122326
              bencio
              Partecipante
                Up
                0
                Down
                ::


                Ho fatto anch’io una piccola prova con il codice di mcl1962 e per fare in fretta ho usato la “TestPage ” di texlive.net.
                Confermo che la divisione in sillabe funziona, e funziona anche togliendo la specifica della lingua (non allo stesso modo, ma le parole sono comunque spezzate).
                Forse ernded dovrebbe mostrare un emc in cui la sillabazione non funziona.

                Mi viene un dubbio. Parliamo della situazione in cui la macro viene usata o di una situazione in cui la macro viene definita e descritta ??

              • #122327
                Up
                0
                Down
                ::

                ernded” post=122897È possibile fare in modo che LaTeX sillabi automaticamente anche l’eventuale testo presente in una macro. Per esempio se è
                \newcommand{\spv}{spazio vettoriale euclideo}
                non mi divide in sillabe e devo indicare la sillabazione nella macro.
                C’è qualche trucco per evitarlo?
                Grazie
                Ernesto

                Non c’è alcuna differenza se scrivi tutta la locuzione o la sua abbreviazione.

                `
                \documentclass{article}
                \usepackage[T1]{fontenc}
                \usepackage[italian]{babel}

                \newcommand{\spv}{spazio vettoriale euclideo}

                \begin{document}

                \parbox{0pt}{\hspace{0pt}spazio vettoriale euclideo}%
                \hspace{6em}%
                \parbox{0pt}{\hspace{0pt}\spv}

                \end{document}
                `

                [attachment=2848]Screenshot2025-02-20at00.05.35.png[/attachment]

                Vedi differenze? Io no. Siccome non penso tu sia un bugiardo, è necessario mostrare un esempio.

                Nota TeXnica: con [tt]\parbox{0pt}{\hspace{0pt}}[/tt] forziamo TeX a cercare di comporre un capoverso impossibile anche usando tutti i punti di sillabazione.

                Ciao
                Enrico

                Attachments:
                You must be logged in to view attached files.
              • #122328
                ernded
                Partecipante
                  Up
                  0
                  Down
                  ::


                  Scusa il ritardo della risposta.
                  Questo è l’esempio
                  `
                  \documentclass{article}
                  \usepackage[T1]{fontenc}
                  \usepackage[italian]{babel}

                  \newcommand{\spv}{spazio vettoriale euclideo }
                  \newcommand{\val}{\textsf{Immagini/Regolazioni/Valori tonali} }

                  \begin{document}
                  \spv \val \spv \val \spv \val \spv \val \spv \val \spv \val \spv \val \spv \val
                  \spv \val \spv \val \spv \val \spv \val \spv \val \spv \val \spv \val \spv \val

                  \end{document}
                  `

                  La parola Valori non viene divisa se cade in fine riga

                • #122329
                  OldClaudio
                  Partecipante
                    Up
                    0
                    Down
                    ::


                    Il sistema Tex non sillaba mai nemmeno le “parle} che non cominciano con una lettera o certi segni come le parentesi o le barre, e non finiscono con uno spazio o certi segni analfabetici. Noer tio caso Valori non può essere divido ma de definisci la macro usando \slash al posto della barra il risultato è corretto`\documentclass{article}
                    \usepackage[T1]{fontenc}
                    \usepackage[italian]{babel}

                    \newcommand{\spv}{spazio vettoriale euclideo }
                    \newcommand{\val}{\textsf{Immagini\slash Regolazioni\slash Valori tonali} }

                    \begin{document}
                    \spv \val \spv \val \spv \val \spv \val \spv \val \spv \val \spv \val \spv \val
                    \spv \val \spv \val \spv \val \spv \val \spv \val \spv \val \spv \val \spv \val

                    \end{document}`

                  • #122330
                    Up
                    0
                    Down
                    ::

                    ernded” post=122920Scusa il ritardo della risposta.
                    Questo è l’esempio
                    `
                    \documentclass{article}
                    \usepackage[T1]{fontenc}
                    \usepackage[italian]{babel}

                    \newcommand{\spv}{spazio vettoriale euclideo }
                    \newcommand{\val}{\textsf{Immagini/Regolazioni/Valori tonali} }

                    \begin{document}
                    \spv \val \spv \val \spv \val \spv \val \spv \val \spv \val \spv \val \spv \val
                    \spv \val \spv \val \spv \val \spv \val \spv \val \spv \val \spv \val \spv \val

                    \end{document}
                    `

                    La parola Valori non viene divisa se cade in fine riga

                    To’! Presenti [tt]\spv[/tt] come esempio quando è ovvio che è [tt]\val[/tt] il problema. 🙄

                    Dal momento che [tt]\lccode[/tt] della barra è impostato a 0, TeX non va oltre quando prova a inserire le cesure perché considera come “parole” solo le sequenze di caratteri con [tt]\lccode[/tt] diverso da 0. Tuttavia la soluzione “facile” di impostare [tt]\lccode`/=`/[/tt] non funziona.

                    Invece funziona usare [tt]\slash[/tt] invece di [tt]/[/tt], perché questo comando produce [tt]/\penalty\exhyphenpenalty[/tt]. Attenzione, però: nessuna cesura è possibile nelle componenti che seguono [tt]\slash[/tt].

                    Puoi ovviare al problema aggiungendo qualcosa.

                    `
                    \documentclass{article}
                    \usepackage[T1]{fontenc}
                    \usepackage[italian]{babel}

                    \AddToHook{cmd/slash/after}{\hspace{0pt}}

                    \newcommand{\spv}{spazio vettoriale euclideo}
                    \newcommand{\val}{\textsf{Immagini\slash Regolazioni\slash Valori tonali}}

                    \begin{document}

                    \spv\ \val\ \spv\ \val\ \spv\ \val\ \spv\ \val\ \spv\ \val\ \spv\ \val\ \spv\ \val\ \spv\ \val\
                    \spv\ \val\ \spv\ \val\ \spv\ \val\ \spv\ \val\ \spv\ \val\ \spv\ \val\ \spv\ \val\ \spv\ \val

                    \end{document}
                    `

                    ATTENZIONE

                    Definire quelle abbreviazioni con uno spazio in fondo è sbagliato (nero corsivo, sono stato incerto se mettere in maiuscolo).

                    Ciao
                    Enrico

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

                Go to top