- Questo topic ha 25 risposte, 4 partecipanti ed è stato aggiornato l'ultima volta 15 anni, 6 mesi fa da
egreg9.
-
CreatoreTopic
-
7 Febbraio 2011 alle 19:29 #55660::
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?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.
? `
?Grazie,
L.
-
CreatoreTopic
-
AutoreRisposte
-
-
7 Febbraio 2011 alle 21:04 #55661::
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
-
7 Febbraio 2011 alle 21:06 #55662::
Leva gli asterischi 😀 Questo`% !TEX encoding = UTF-8 Unicode
% !TEX TS-program = pdflatex\documentclass[a4paper]{book}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[latin,italian]{babel}
\languageattribute{latin}{withprosodicmarks}\begin{document}
La parola
\begin{otherlanguage}{latin}
\ProsodicMarksOn
ros=a
\ProsodicMarksOff
\end{otherlanguage}
ha la vocale breve.\verb+ros=a+ produce \begin{otherlanguage}{latin}\ProsodicMarksOn ros=a \ProsodicMarksOff\end{otherlanguage}.
\end{document}`Non mi dà problemi. Certo, credo, che \ProsodicMarksOn e -Off non hanno argomenti, ma servono soltanto come interruttori per il testo che racchiudono.
Va tutto bene, da me, anche scrivendo come fai tu, e anche levando fontenc e inputenc.
Il secondo errore secondo me è dovuto al fatto che LaTeX indente ^ come il carattere per mettere gli esponenti in matematica, e chiede un segno di dollaro.
Ciao
Tommaso
-
7 Febbraio 2011 alle 21:08 #55663
-
7 Febbraio 2011 alle 21:47 #55664::
Hahahahaha!
L’allievo sta raggiungendo il maestro 😉
Non avevo letto la tua risposta, ma almeno al primo problema ho saputo rispondere. Il secondo l’ho individuato. Almeno.
Sono contento.
Temo di doverti dare brutte notizie. 😉 Se leggi attentamente la mia risposta vedrai che l’uso di “otherlanguage” è sconsigliabile in quel contesto: va usato per contenere interi capoversi e non all’interno di un capoverso. Al secondo problema, quello di ^, non ci sei nemmeno andato vicino. 🙂 Però ammiro il coraggio. 🙂
Già che ci sono: se si usa utf-8 e un’impostazione di tastiera adeguata, inserire direttamente ă e ā è certamente più comodo che usare il sistema di \ProsodicMarksOn. Ovviamente chi ha una tastiera italiana (pfui, direbbe Nero Wolfe) si scontra con problemi insormontabili.
Su Mac OS, con l’impostazione di tastiera U.S. Extended si scrive “Alt-b a” e “Alt-a a” rispettivamente. Con “Alt-v s” ottengo š, e via discorrendo. Sui sistemi GNU/Linux è possibile avere qualcosa di simile.
Ciao
Enrico
-
8 Febbraio 2011 alle 0:12 #55665::
Se è per quello, chi ha la tastiera italiana o usa il meccanismo dell’attributo withprosodicmarks e delle dichiarazioni \ProsodicMarksOn (dentro un gruppo la dichiarazione \ProsodicMarksOff non dovrebbe essere necessaria) oppure usa i soliti vecchi comandi \=a per la a lunga e \u{a} per la a breve.
Il meccanismo dei segni prosodici servirebbe per semplificare l’input, mi è stato chiesto apposta, ma non mi sembra che semplifichi tanto, solo una battuta per la lunga e tre battute per la breve.Scrivendo
`
Questo è un breve esempio di testo latino con segni prosodici <<\begin{otherlanguage}{latin}\ProsodicMarksOn ros=a invincib^ilis\end{otherlanguage}>>
`
gli spazi spuri non compaiono, ma scrivendo
`
Questo è un breve esempio di testo latino con segni prosodici <<\begin{otherlanguage}{latin}\ProsodicMarksOn ros=a invincib^ilis \end{otherlanguage}>>
`
appare uno spazio abbastanza largo (due spazi? non direi) prima dei caporali chiusi. Direi che è normale. Non vedo spazi spuri prima fra i caporali di apertura e l’inizio del testo latino.
Scrivendo invece
`
Questo è un breve esempio di testo latino con segni prosodici <<\foreignrlanguage{latin}{\ProsodicMarksOn ros=a invincib^ilis}>>
`
Succede quello che ha descritto Enrico, che i segni prosodici vengono letti insieme a tutto l’argomento e quindi quando hanno ancora il significato di segni matematici o di interpunzione, perché \ProsodicMarksOn non è ancora entrato in funzione; quindi si rende necessario il codice con \scantokens:
`
Questo è un breve esempio di testo latino con segni prosodici \foreignlanguage{latin}{\scantokens{\ProsodicMarksOn ros=a invincib^ilis\empty}}
`
Ma dei due spazi che richiedono i due \unskip io non ho trovato traccia.Questo fatto in effetti non è descritto nella documentazione del latino in babel; io stesso me ne rendo conto solo ora; evidentemente non ho mai testato i segni prosodici nell’argomento di \foreignlanguage.
Claudio
-
9 Febbraio 2011 alle 17:05 #55666
-
9 Febbraio 2011 alle 22:55 #55667::
Se è per quello, chi ha la tastiera italiana o usa il meccanismo dell’attributo withprosodicmarks e delle dichiarazioni \ProsodicMarksOn (dentro un gruppo la dichiarazione \ProsodicMarksOff non dovrebbe essere necessaria) oppure usa i soliti vecchi comandi \=a per la a lunga e \u{a} per la a breve.
Il meccanismo dei segni prosodici servirebbe per semplificare l’input, mi è stato chiesto apposta, ma non mi sembra che semplifichi tanto, solo una battuta per la lunga e tre battute per la breve.Scrivendo
`
Questo è un breve esempio di testo latino con segni prosodici <<\begin{otherlanguage}{latin}\ProsodicMarksOn ros=a invincib^ilis\end{otherlanguage}>>
`
gli spazi spuri non compaiono, ma scrivendo
`
Questo è un breve esempio di testo latino con segni prosodici <<\begin{otherlanguage}{latin}\ProsodicMarksOn ros=a invincib^ilis \end{otherlanguage}>>
`
appare uno spazio abbastanza largo (due spazi? non direi) prima dei caporali chiusi. Direi che è normale. Non vedo spazi spuri prima fra i caporali di apertura e l’inizio del testo latino.
Scrivendo invece
`
Questo è un breve esempio di testo latino con segni prosodici <<\foreignrlanguage{latin}{\ProsodicMarksOn ros=a invincib^ilis}>>
`
Succede quello che ha descritto Enrico, che i segni prosodici vengono letti insieme a tutto l’argomento e quindi quando hanno ancora il significato di segni matematici o di interpunzione, perché \ProsodicMarksOn non è ancora entrato in funzione; quindi si rende necessario il codice con \scantokens:
`
Questo è un breve esempio di testo latino con segni prosodici \foreignlanguage{latin}{\scantokens{\ProsodicMarksOn ros=a invincib^ilis\empty}}
`
Ma dei due spazi che richiedono i due \unskip io non ho trovato traccia.Questo fatto in effetti non è descritto nella documentazione del latino in babel; io stesso me ne rendo conto solo ora; evidentemente non ho mai testato i segni prosodici nell’argomento di \foreignlanguage.
Claudio
Purtroppo gli spazi ci sono. 🙁 Qui c’è il PDF e segue il codice:
`\documentclass[a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage[latin,italian]{babel}
\languageattribute{latin}{withprosodicmarks}\begin{document}
1.\ Esempio di testo latino con segni prosodici
<<\begin{otherlanguage}{latin}\ProsodicMarksOn ros=a invincib^ilis\end{otherlanguage}>>1.\ Esempio di testo latino con segni prosodici
<<\space\space r (\string\space)\string\space 1.\ Esempio di testo latino con segni prosodici <<\space r (\string\space) \medskip 2.\ Esempio di testo latino con segni prosodici <<\begin{otherlanguage}{latin}\ProsodicMarksOn ros=a invincib^ilis \end{otherlanguage}>>\medskip
%3.\ Esempio di testo latino con segni prosodici
%<<\foreignlanguage{latin}{\ProsodicMarksOn %ros=a invincib^ilis}>>
%
% \medskip4.\ Esempio di testo latino con segni prosodici
\foreignlanguage{latin}{\scantokens{\ProsodicMarksOn ros=a invincib^ilis\empty}}4.\ Esempio di testo latino con segni prosodici \space\space r (\string\space\string\space)
4.\ Esempio di testo latino con segni prosodici \space r (\string\space)
\medskip
5.\ Esempio di testo latino con segni prosodici
\foreignlanguage{latin}{\unskip\scantokens{\ProsodicMarksOn ros=a invincib^ilis\empty}}5.\ Esempio di testo latino con segni prosodici r (\string\unskip)
\medskip
6.\ Esempio di testo latino con segni prosodici
\foreignlanguage{latin}{\unskip\unskip\scantokens{\ProsodicMarksOn ros=a
invincib^ilis\empty}}6.\ Esempio di testo latino con segni prosodici r (\string\unskip\string\unskip)
\end{document}`
Nel caso 1 ci sono due spazi fra le virgolette aperte e la “r”, come si vede dalle due righe successive: nella seconda le “r” sono allineate (e sono stati aggiunti due spazi).Nel caso 2 lo spazio prima delle virgolette chiuse è dovuto al fine riga prima di \end{otherlanguage}. Comunque in questi casi va usato “otherlanguage*” che è più efficiente (e non suppone di racchiudere interi capoversi).
Il caso 3 è commentato perché dà un errore che ho già spiegato.
Il caso 4 mostra come effettivamente ci siano due spazi di troppo. Il caso 5 mostra l’effetto di aggiungere un \unskip, ancora insufficiente. Nel 6 si vede che l’aggiunta di due \unskip fa allineare perfettamente le due “r”.
Se a te viene diversamente ci dev’essere qualche differenza nella distribuzione: questo è il risultato di \listfiles.
` article.cls 2007/10/19 v1.4h Standard LaTeX document class
size10.clo 2007/10/19 v1.4h Standard LaTeX file (size option)
fontenc.sty
t1enc.def 2005/09/27 v1.99g Standard LaTeX file
babel.sty 2008/07/06 v3.8l The Babel package
latin.ldf 2008/07/06 v2.0l Latin support from the babel system
italian.ldf 2008/03/14 v1.2t Italian support from the babel system`
È un problema che bisogna cercare di risolvere.Ciao
Enrico
-
10 Febbraio 2011 alle 1:35 #55668::
L’unica differenza è che il mio file italian.ldf è quello che ho inviato per l’inserzione nella distribuzione (datato 2010, e che Johannes non prende in considerazione).Ma dubito che la cosa dipenda da italian.ldf; il file latin.ldf è quello di sistema con la tua stessa data. A Tommaso ho inviato un versione corretta pochi giorni fa per un erroretto che non ci coinvolge in questa questione degli spazi, e che non mi sono ancora messo nel mio albero. Vedrò di fare un’analisi con trace per vedere che cosa succede da me, ma ti garantisco che io gli spazi non ce li ho.
Claudio
-
10 Febbraio 2011 alle 7:27 #55669::
Purtroppo gli spazi ci sono. 🙁
Confermo, naturalmente. Sostanzialmente, \ProsodicMarksOn introduce degli spazi spuri che vanno corretti a mano.
Si tratta di un difetto che (per il mio modo di intendere LaTeX (che mira alla massima semplicità del codice scritto dall’utente finale) andrebbe corretto a monte (direttamente in babel) e non a valle (con il comando di Enrico che effettivamente risolve la soluzione).
Ciao,
L.
-
10 Febbraio 2011 alle 15:51 #55670::
Carissimi, ancora un dubbio. Vorrei riprodurre il solo accento breve, senza la lettera sotto.
`\documentclass{article}
\usepackage[latin,italian]{babel}
\languageattribute{latin}{withprosodicmarks}
\newcommand{\latino}[1]{%
\foreignlanguage{latin}{\unskip\unskip\scantokens{#1\empty}}}
\begin{document}
\latino{\ProsodicMarksOn ^a}
%\latino{\ProsodicMarksOn ^}
%\latino{\ProsodicMarksOn ^\null}
%\latino{\ProsodicMarksOn ^\phantom{a}}
\end{document}`
Gli esempi commentati non funzionano: il compilatore, semplicemente, si blocca.Grazie,
L.
-
10 Febbraio 2011 alle 18:08 #55671::
Carissimi, ancora un dubbio. Vorrei riprodurre il solo accento breve, senza la lettera sotto.
`\documentclass{article}
\usepackage[latin,italian]{babel}
\languageattribute{latin}{withprosodicmarks}
\newcommand{\latino}[1]{%
\foreignlanguage{latin}{\unskip\unskip\scantokens{#1\empty}}}
\begin{document}
\latino{\ProsodicMarksOn ^a}
%\latino{\ProsodicMarksOn ^}
%\latino{\ProsodicMarksOn ^\null}
%\latino{\ProsodicMarksOn ^\phantom{a}}
\end{document}`
Gli esempi commentati non funzionano: il compilatore, semplicemente, si blocca.Grazie,
L.Non c’è da fare nessun otherlanguage o \ProsodicMarksOn: \u{} è più che sufficiente.
Ciao
Enrico
-
10 Febbraio 2011 alle 18:24 #55672::
Lorenzo, non c’è niente da stupirsi dei gli esempi commentati bloccano il programma; semplicemente non sono definiti; Troveresti el tue risposte più rapidamente se aprissil il file latin.ldf e andassi a vedere che cosa c’è scritto dentro. Non è sempre facile capicri qualcosa, ma in questo caso si andrebbe a vedere il comando \ProsodicMarks, che definisce il significato ei segni ^ e = quando sono attivi; vedresti che ^a è una scorciatoia per scrivere più rapidamente \u{a}; ci sono analoghe definizioni per le altre quattro vocali; ci sono anche le definizioni che funzionano da scorciatoie in matematica, anche se dubito che un latinista che scrive un grammatica latina o un vocabolario mono o bilingue latino scriverebbe anche della matematica con simboli così complessi.Però questo spiega la risposta di Enrico.
Ciao
Claudio
-
10 Febbraio 2011 alle 19:02 #55673
-
10 Febbraio 2011 alle 22:54 #55674::
Allora, ragazzi, ci sono; I due spazi nascono da uno o due spazi dopo graffe chiuse non eliminati con i commenti dopo le due graffe.L’errore è nel file babel.def; io ho il sistema TeX aggiornato a due o tre giorni fa, quindi dovrei avere l’ultimissima versione di tutto quello che è distribuito worlwide; quindi ho lo stesso filei latin.ldf che avete voi e lo stesso babel.def che avete voi con la specificazione 2008/07/06 v3.8l .
In questo file ci vuole un % a fine riga nelle due righe numerate 191 e 246
che devono leggersi rispettivamente:
riga 191:
`
\fi}% <-------------- spazio ` riga 246: ` \csname normal@char\string##1\endcsname}% <------ spazio ` Potete correggere i vostri file babel.def, salvandoli nel vostro albero personale. Per la verità non sono sicuro che ci vogliano entrambi i commenti, mi pare che quello essenziale sia il secondo, ma metterci anche il primo non disturba niente e nessuno Io intanto vedo di segnalare i bug alla commissione; incrociamo le dita... Ciao Claudio -
10 Febbraio 2011 alle 23:12 #55675::
Allora, ragazzi, ci sono; I due spazi nascono da uno o due spazi dopo graffe chiuse non eliminati con i commenti dopo le due graffe.
L’errore è nel file babel.def; io ho il sistema TeX aggiornato a due o tre giorni fa, quindi dovrei avere l’ultimissima versione di tutto quello che è distribuito worlwide; quindi ho lo stesso filei latin.ldf che avete voi e lo stesso babel.def che avete voi con la specificazione 2008/07/06 v3.8l .
In questo file ci vuole un % a fine riga nelle due righe numerate 191 e 246
che devono leggersi rispettivamente:
riga 191:
`
\fi}% <-------------- spazio ` riga 246: ` \csname normal@char\string##1\endcsname}% <------ spazio ` Potete correggere i vostri file babel.def, salvandoli nel vostro albero personale. Per la verità non sono sicuro che ci vogliano entrambi i commenti, mi pare che quello essenziale sia il secondo, ma metterci anche il primo non disturba niente e nessuno Io intanto vedo di segnalare i bug alla commissione; incrociamo le dita... Ciao ClaudioWOW!
Ciao
Enrico
-
11 Febbraio 2011 alle 7:59 #55676
-
11 Febbraio 2011 alle 17:57 #55677
-
11 Febbraio 2011 alle 18:11 #55678::
Nel frattempo non mancate di seguire il mio consiglio, cioò di correggere la vostra copia di babel.def e di salvarla nel vostro albero personale.
Mi sa che non lo seguirò. 🙁
Non dico che non sia un buon consiglio. Solo, va contro i miei principi: le correzioni vanno fatte dagli autori dei pacchetti, e io devo poterne beneficiare aggiornando il mio sistema con un clic sulla TeX Live Utility.
“Il di più, viene dal Maligno”. 😉
Ciao,
L.
-
11 Febbraio 2011 alle 22:46 #55679::
Lorenzo, condivido la tua posizione, ma c’è un problema: a non seguire il mio consiglio rischi di aspettare 5 anni prima che Johannes Brahms provveda a eseguire la correzione.Siccome le mie collaborazioni con il TUG datano dall’inizio degli anni ’90, quando ho fatto l’upload della sillabazione italiana, so benissimo che nei primi anni del 2000 Johannes rispondeva, agiva, sgridava, correggeva, aiutava, consigliava. {poi a un certo punto, pur rimanendo gelosamente responsabile quasi unico del sistema linguistico del sistema TeX, è virtualmente sparito; tra il 2005 e il 2008 c’è stato un solo aggiornamento di Babel; raramente ci sono degli aggiornamenti del file ldf (descrizione di una lingua (recentemente ho visto aggiornare il file relativo al croato) ma altrimenti non si muove nulla. Uno dei collaboratori al progetto polyglossia mi dice che polyglossia non esisterebbe se Johannis facesse qualche cosa.
Dunque, non correggere il proprio file secondo il mio consiglio, per una correzione assolutamente banale, e andare avanti con un file di sistema che non verrà presumibilmente aggiornato per anni, rischia di passare per un comportamento masochistico.
Chiunque altro che legge questo forum può evidentemente seguire il mio consiglio, non è una cosa riservata per me o per gli amici e conoscenti; invito a diffondere la notizia a tutti, anche nei forum internazionali. e non lo dico solo per difendere il mio lavoro di analisi, prognosi e terapia, ci mancherebbe altro. Chiunque trovi un errore vero e lo segnali, secondo me è sempre il benvenuto; se il manutentore ufficiale provvede prontamente, tanto meglio.
Ciao
Claudio
-
18 Febbraio 2011 alle 18:21 #55680::
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?
…Una possibile soluzione: usare il pacchetto “newunicodechar” appena inviato su CTAN e lasciar perdere “withprosodicmarks”
`\documentclass[a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[latin,italian]{babel}
\usepackage{newunicodechar}%\newunicodechar{Ă}{\u{A}} \newunicodechar{ă}{\u{a}}
\newunicodechar{Ĕ}{\u{E}} \newunicodechar{ĕ}{\u{e}}
\newunicodechar{Ĭ}{\u{I}} \newunicodechar{ĭ}{\u{\i}}
\newunicodechar{Ŏ}{\u{O}} \newunicodechar{ŏ}{\u{o}}
\newunicodechar{Ŭ}{\u{U}} \newunicodechar{ŭ}{\u{u}}
\newunicodechar{Ā}{\={A}} \newunicodechar{ā}{\={a}}
\newunicodechar{Ē}{\={E}} \newunicodechar{ē}{\={e}}
\newunicodechar{Ī}{\={I}} \newunicodechar{ī}{\={\i}}
\newunicodechar{Ō}{\={O}} \newunicodechar{ō}{\={o}}
\newunicodechar{Ū}{\={U}} \newunicodechar{ū}{\={u}}\begin{document}
\begin{otherlanguage*}{latin}rosă, invincibĪlis, pōpŭlus, pŏpŭlus\end{otherlanguage*}
\end{document}`
Naturalmente occorre un editor Unicode. Con \newunicodechar è possibile definire il significato di qualsiasi carattere Unicode. Per esempio,
`\usepackage{wasysym}
\newunicodechar{♪}{\eighthnote}`
Ciao
Enrico
-
18 Febbraio 2011 alle 20:08 #55681::
Ottima soluzione, Enrico! Veramente ottima.Tuttavia, anche se la tabella delle lettere marcabili con ^ e = per i segni di breve e di lunga non comprende le lettere maiuscole, quegli shorthands fanno di più con non semplicemente inserire il comando TeX per sovrapporre il segno sulla lettera di base, ma ne consentono l’uso anche in matematica (con gli accenti matematici corrispondenti) e inseriscono un grumo di colla di larghezza nulla per consentire la sillabazione, ove possibile, nei due frammenti di parola prima e dopo la lettera marcata.
In ogni caso è un’ottima idea e vedrò se riesco a inserirla nella versione di latin.ldf (Joannes permettendo e se io riesco a farlo in modo da non impasticciare l’intero file).
Ciao
Claudio
-
18 Febbraio 2011 alle 20:45 #55682::
Ottima soluzione, Enrico! Veramente ottima.
Tuttavia, anche se la tabella delle lettere marcabili con ^ e = per i segni di breve e di lunga non comprende le lettere maiuscole, quegli shorthands fanno di più con non semplicemente inserire il comando TeX per sovrapporre il segno sulla lettera di base, ma ne consentono l’uso anche in matematica (con gli accenti matematici corrispondenti) e inseriscono un grumo di colla di larghezza nulla per consentire la sillabazione, ove possibile, nei due frammenti di parola prima e dopo la lettera marcata.
In ogni caso è un’ottima idea e vedrò se riesco a inserirla nella versione di latin.ldf (Joannes permettendo e se io riesco a farlo in modo da non impasticciare l’intero file).
Ciao
ClaudioQuello era solo un esempio per come lavorare con il testo; per la questione della sillabazione basta aggiungere \allowhyphens e per la matematica è facile:
`…
\newunicodechar{ă}{\textormath{\u{a}\allowhyphens}{\breve{a}}}
…`
Sempre che uno ne abbia davvero bisogno! Tuttavia starei attento a inserire caratteri non a sette bit in uno dei file di configurazione di babel. Più sicuro, per questo, usare \DeclareUnicodeCharacter. Qualcosa come
`\@ifpackagewith{utf8}{inputenc}{
\DeclareUnicodeCharacter{0103}{\textormath{\u{a}\allowhyphens}{\breve{a}}}
…
}{}`
avvisando che inputenc va caricato prima di babel (com’è d’altronde giusto che sia). Ma con il problema che \DeclareUnicodeCharacter può essere usato solo nel preambolo!Ci si può studiare.
Ciao
Enrico
-
18 Febbraio 2011 alle 21:18 #55683::
Certo, grazie mille. per ora mi accontento di avere trovato l’errore di babel.def.
Finita di tradurre la documentazione di una classe di cui fare l’upload, mi dedico al latino.Ahimè, non so che idea mi sia venuta di scrivere una classe in italiano compresa tutta la sua documentazione; peccato che fra tutto siano una sessantina di pagine di testo commentato e intercalato al codice; inoltre, come sempre accade, vedo che la classe dovrebbe essere adatta a scrivere in varie lingue, scegliendo con una opzione quale lingua usare come main language; i bisticci fra le lingue sono terribili e se ne metti a posto uno va a ramengo un altro; una vera faticaccia; ma presto spero di finire.
Ciao
Claudio
-
20 Febbraio 2011 alle 15:43 #55684::
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?
…Una possibile soluzione: usare il pacchetto “newunicodechar” appena inviato su CTAN e lasciar perdere “withprosodicmarks”
`\documentclass[a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[latin,italian]{babel}
\usepackage{newunicodechar}%\newunicodechar{Ă}{\u{A}} \newunicodechar{ă}{\u{a}}
\newunicodechar{Ĕ}{\u{E}} \newunicodechar{ĕ}{\u{e}}
\newunicodechar{Ĭ}{\u{I}} \newunicodechar{ĭ}{\u{\i}}
\newunicodechar{Ŏ}{\u{O}} \newunicodechar{ŏ}{\u{o}}
\newunicodechar{Ŭ}{\u{U}} \newunicodechar{ŭ}{\u{u}}
\newunicodechar{Ā}{\={A}} \newunicodechar{ā}{\={a}}
\newunicodechar{Ē}{\={E}} \newunicodechar{ē}{\={e}}
\newunicodechar{Ī}{\={I}} \newunicodechar{ī}{\={\i}}
\newunicodechar{Ō}{\={O}} \newunicodechar{ō}{\={o}}
\newunicodechar{Ū}{\={U}} \newunicodechar{ū}{\={u}}\begin{document}
\begin{otherlanguage*}{latin}rosă, invincibĪlis, pōpŭlus, pŏpŭlus\end{otherlanguage*}
\end{document}`
Naturalmente occorre un editor Unicode. Con \newunicodechar è possibile definire il significato di qualsiasi carattere Unicode. Per esempio,
`\usepackage{wasysym}
\newunicodechar{♪}{\eighthnote}`
Ciao
EnricoGrazie per il pacchetto 😀
Però mi chiedo come potrei fare a scrivere nel preambolo quelle definizioni non avendo la tastiera italiana la possibilità di mettere lunga e breve sopra le vocali.
Mi sembra di capire che la tua soluzione aggiri utf8x, necessario invece per scrivere
ă ĕ ĭ ŏ ŭ Ă Ĕ Ĭ Ŏ Ŭ ā ē ī ō ū Ā Ē Ī Ō Ū
direttamente da tastiera a chi ne ha la possibilità.
In sostanza, rimanendo in ambito latineggiante, per segnare la quantità sulle vocali potrei:
1. mettere latin tra le lingue di babel, withprosodicmarks come attributo, \ProsodicMarksOn prima del testo interessato e usare le scorciatoie;
2.dare utf8x a inputenc e scrivere ă ĕ ĭ ŏ ŭ Ă Ĕ Ĭ Ŏ Ŭ ā ē ī ō ū Ā Ē Ī Ō Ū direttamente dalla tastiera (su Mac basta impostare la US extended come sorgente di input);
3. dare utf8 a inputenc e procedere con venti dichiarazioni nel preambolo del tipo
`\DeclareUnicodeCharacter{0102}{\u{A}}`
4. usare il tuo pacchetto e scrivere nel preambolo venti cose come
`\newunicodechar{Ĕ}{\u{E}}`
per poi usare Ĕ tranquillamente nel testo. Naturalmente dando utf8 a inputenc.
Giusto? In pratica si usa il metodo del punto 2 evitando utf8x.
Ciao
Tommaso
-
20 Febbraio 2011 alle 16:08 #55685::
Grazie per il pacchetto 😀
Però mi chiedo come potrei fare a scrivere nel preambolo quelle definizioni non avendo la tastiera italiana la possibilità di mettere lunga e breve sopra le vocali.
Diversamente tastierato (© egreg9) 🙂
Mi sembra di capire che la tua soluzione aggiri utf8x, necessario invece per scrivere
ă ĕ ĭ ŏ ŭ Ă Ĕ Ĭ Ŏ Ŭ ā ē ī ō ū Ā Ē Ī Ō Ū
direttamente da tastiera a chi ne ha la possibilità.
Niente è “necessario”. Il nuovo pacchetto evita la necessità di caricare utf8x con le sue complicazioni ed effetti collaterali (incompatibilità con biblatex, per esempio).
In sostanza, rimanendo in ambito latineggiante, per segnare la quantità sulle vocali potrei:
1. mettere latin tra le lingue di babel, withprosodicmarks come attributo, \ProsodicMarksOn prima del testo interessato e usare le scorciatoie;
2.dare utf8x a inputenc e scrivere ă ĕ ĭ ŏ ŭ Ă Ĕ Ĭ Ŏ Ŭ ā ē ī ō ū Ā Ē Ī Ō Ū direttamente dalla tastiera (su Mac basta impostare la US extended come sorgente di input);
3. dare utf8 a inputenc e procedere con venti dichiarazioni nel preambolo del tipo
`\DeclareUnicodeCharacter{0102}{\u{A}}`
4. usare il tuo pacchetto e scrivere nel preambolo venti cose come
`\newunicodechar{Ĕ}{\u{E}}`
per poi usare Ĕ tranquillamente nel testo. Naturalmente dando utf8 a inputenc.Giusto? In pratica si usa il metodo del punto 2 evitando utf8x.
Il metodo 1 è quello di scelta per il diversamente tastierato che abbia bisogno di molti di quegli accenti. Il metodo 2 ha qualche controindicazione, come già osservato. Il metodo 3 richiede di cercarsi i numeri corrispondenti ai caratteri. Sul Mac c’è l’applicazione UnicodeChecker che aiuta.
Il metodo 4 è stato ideato proprio per ovviare al problema di cercarsi i numeretti, a patto che si sia in grado di inserire i caratteri direttamente; ma se uno può usare i metodi 2 e 3, certamente può servirsi del 4. Non occorre nemmeno dare tutte le definizioni in blocco, basta aggiungerne quando serve; se poi si dovessero avere problemi di sillabazione, si possono integrare le definizioni secondo lo schema
`\newunicodechar{ă}{\u{a}\allowhyphens}`
in modo da permettere le cesure successive alla lettera accentata (notare che occorre ridefinire anche “ă” e “Ă”, in questo caso). Nell’improbabile caso che uno voglia usare “ă” anche in modo matematico, si può pure ricorrere a
`\newunicodechar{ă}{\textormath{\u{a}\allowhyphens}{\breve{a}}}`
Mi raccomando, però: non ridefinite “ă” e “Ă” se il vostro documento contiene passi in romeno o vietnamita. 🙂Ciao
Enrico
-
-
AutoreRisposte
- Devi essere connesso per rispondere a questo topic.