Re: Misteri di \ProsodicMarksOn

#55661
Up
0
Down
::

Ciao a tutti.

1.
`\documentclass{article}
\usepackage[latin,italian]{babel}
\languageattribute{latin}{withprosodicmarks}
\begin{document}
Ciao \begin{otherlanguage}{latin}\ProsodicMarksOn{ros^a}\end{otherlanguage} ciao.
\end{document}
`
Perché quegli spazi sbagliati?

Per lo spazio in più a sinistra dirò dopo. Per quello mancante a destra la risposta è semplice: all’interno di un capoverso va usato “otherlanguage*” e non “otherlanguage”, il quale è pensato per interi capoversi o addirittura sezioni intere (di qualsiasi livello).

2.
`\documentclass{article}
\usepackage[latin,italian]{babel}
\languageattribute{latin}{withprosodicmarks}
\newcommand{\latinorum}[1]{%
\begin{otherlanguage*}{latin}#1\end{otherlanguage*}}
\begin{document}
Ciao \latinorum{\ProsodicMarksOn{ros^a}} ciao.
\end{document}`
Perché l’errore:
`Missing $ inserted.

$
l.10 Ciao \latinorum{\ProsodicMarksOn{ros^a}}
ciao.
? `
?

Questo è più sottile. L’uso di ^ come carattere attivo per indicare “brevis” ne richiede l’attivazione. Con la tua definizione di \latinorum però catturi l’argomento prima che venga cambiata la lingua e il codice di categoria di ^ rimane fissato; da qui l’errore, perché l’usuale ^ può comparire solo in modo matematico. Soluzione:
`\newcommand{\latinorum}[1]{%
\foreignlanguage{latin}{\unskip\unskip\scantokens{#1\empty}}}`
I due \unskip eliminano gli spazi spuri a sinistra. Vedi dopo.

Le parentesi graffe attorno a ros^a sono del tutto inutili: \ProsodicMarksOn non ha argomenti, è una dichiarazione.

Per lo spazio indesiderato all’inizio è evidente che si tratta di due ❗ spazi spuri che dipendono, da quello che ho potuto capire, dalla presenza dell’attributo withprosodicmarks. Tuttavia non sono riuscito a trovare da dove saltino fuori. 🙁 Il fatto che siano due mi fa pensare che il problema sia nell’attivazione dei due caratteri.

Ciao
Enrico

Go to top