Welcome, Guest. Please login or register.
+  Linux Soft Forum
|-+  Cercetează» Software» Diacritice în Latex
[Picture 161] [Picture 160] [Picture 159]
Username:
Password:
 
Pages: [1]   Go Down
  Print  
Author Topic: Diacritice în Latex  (Read 5951 times)
0 Members and 2 Guests are viewing this topic.
mapleoin
Admini
**

mapleoin@jabber.org


WWW
« on: August 03, 2007, 10:53:10 PM »

M-am apucat de învățat latex. Îmi trebuie pentru un carnețel, nu asta e important.

Prima problemă de care m-am lovit (caut de 3 ore pe google) sunt diacriticele. Deși am găsit cam ce ar trebui să fac, adică:
Code:
\usepackage[romanian]{babel}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}

și am găsit și toate pachetele. Primesc eroarea asta:
Code:
This is pdfeTeX, Version 3.141592-1.21a-2.2 (Web2C 7.5.4)
entering extended mode
(./cuprins.tex
LaTeX2e <2003/12/01>
Babel <v3.8d> and hyphenation patterns for american, french, german, ngerman, b
ahasa, basque, bulgarian, catalan, croatian, czech, danish, dutch, esperanto, e
stonian, finnish, greek, icelandic, irish, italian, latin, magyar, norsk, polis
h, portuges, romanian, russian, serbian, slovak, slovene, spanish, swedish, tur
kish, ukrainian, nohyphenation, loaded.
(/usr/share/texmf-dist/tex/latex/base/article.cls
Document Class: article 2004/02/16 v1.4f Standard LaTeX document class
(/usr/share/texmf-dist/tex/latex/base/size10.clo))
(/usr/share/texmf-dist/tex/generic/babel/babel.sty
(/usr/share/texmf-dist/tex/generic/babel/romanian.ldf
(/usr/share/texmf-dist/tex/generic/babel/babel.def)))
(/usr/share/texmf-dist/tex/latex/psnfss/times.sty)
(/usr/share/texmf-dist/tex/latex/base/inputenc.sty
(/usr/share/texmf-dist/tex/latex/base/latin1.def))
(/usr/share/texmf-dist/tex/latex/base/fontenc.sty
(/usr/share/texmf-dist/tex/latex/base/t1enc.def)) (./cuprins.aux)
(/usr/share/texmf-dist/tex/latex/psnfss/t1ptm.fd)

! Package inputenc Error: Keyboard character used is undefined
(inputenc)                in inputencoding `latin1'.

See the inputenc package documentation for explanation.
Type  H <return>  for immediate help.
 ...                                             
                                                 
l.13 \maketitle
               
?

Aș vrea să reușesc să am toate diacriticele așa cum trebuie, inclusiv ș și ț cu virgulă, nu cedilă. Și asta fără să fiu nevoit să scriu un script care să înlocuiască diacriticele din sursă cu codul specific fiecărui caracter, adică: \u{a} \^{a} \c{s} etc.
« Last Edit: August 03, 2007, 10:53:29 PM by mapleoin » Logged

rs
Veteran
**

« Reply #1 on: August 04, 2007, 06:28:49 PM »

Dai drumu la rospell pe un fisier cu extensie .tex (rospell myfile.tex), editezi fisierul in mod normal folosind diacriticile din UTF-8 (modul default de editare), apoi salvezi, generezi fisierele dvi, pdf, si tot ce mai vrei tu.

Daca esti curios, deschide fisierul .tex in alt editor, si vezi in ce format l-a salvat rospell. In mod normal ce salveaza/citeste rospell din fisiere .tex si ce apare pe ecran sunt doua lucruri diferite - suportul pentru limba ro este hardwired!
Logged

Laurențiu Roman
Membru
*

Here comes the...


WWW
« Reply #2 on: August 04, 2007, 10:18:48 PM »

Dar din cate știu eu în fișiere tex nu există diacritice, ci coduri pentru diacritice. Știu că există pentru cele "greșite", cu sedilă dar nu știu pentru cele noi/corecte dacă există așa ceva.

rs, știe rospell să facă din \u{a}, ă și din \c{s}, ș nu ş? Reformulez, știe măcar să facă măcar caracterul vechi ş din \c{s}?

maploin, eu zic să te interesezi în ce standarde sunt diacriticele noi/corecte și să vezi suportul pentru ele în (La)TeX - citit (la)tec... Scoate limba

Eu zic să dai o căutare a termenilor:
  • Unicode U0218, U0219, U021A, U021A
  • SR 13411:1999 (standard românesc)
  • ISO/IEC 8859‑16:2001 (Latin10) (standard internațional)
  • subset Unicode Latin Extended-B

Pentru careacterele icorecte/vechi:
  • Unicode U015E (S cu sedilă), U015F (s cu sedilă), U0162 (T cu sedilă) și U0163 (t cu sedilă)
  • Code Page 1250
  • ISO/IEC 8859‑2:1998 (Latin2)
  • Unicode Latin Extended-A

Pentru caractere ai încercat să le scri folosind \,{s}. Nu știu dacă merge pentru că nu m-am mai atins de LaTeX de vreo 3 ani. Sau nu asta vrei, adică le ai scrise deja și le vrei transformate fără muncă manuală? Nu cred că se poate așa ceva.
« Last Edit: August 04, 2007, 10:59:33 PM by laur3ooo » Logged

What direction?
Death or action!
Life begins at the intersection.
mapleoin
Admini
**

mapleoin@jabber.org


WWW
« Reply #3 on: August 04, 2007, 11:01:42 PM »

păi chestia e că nu le vreau transformate manual, că pot face asta cu un script, dar aș vrea să fie ultima alternativă. Și normal că nu vreau nici să le scriu cu \'{s} pentru că m-aș împușca în picior... Și în fișierele tex poți să introduci diacritice, pentru că de asta ai {inputenc} care se ocupă exact cu recunoașterea caracterelor.

folosesc latin10 în care ar trebui să fie suport pentru limba română (deci și ș ț) dar nu le recunoaște. Am încercat și cu pachetul utf8. Am reușit să scot toate diacriticele comune adică ăîâ și ș ț cu cedilă sub, dar nu și cele corecte pe care nu le găsesc în nici un pachet.

rs: m-am gândit la alternativa asta și azi am încercat să compilez rospell, dar n-am reușit pentru că nu găsește qt, deși am setat $QTDIR cum trebe... o să mai încerc și mâine deși prefer vim.

Dacă nu găsesc nici mâine o să scriu cu cedile
« Last Edit: August 04, 2007, 11:07:08 PM by mapleoin » Logged

Laurențiu Roman
Membru
*

Here comes the...


WWW
« Reply #4 on: August 04, 2007, 11:19:34 PM »

latin10 are suport pentru ambele tipuri de caractere așa că le va afișa pe cele vechi/incorecte, nu le va înlocui (fiind versiune nouă) printr-o metodă magică. Standardul fiind extins, nu cred că se pot înlocui automat, deoarece toate caracterele sunt corecte dpdv al Latin10.

Chestia și mai importantă e că în fişiere .tex nu există diacritice, ci niște coduri care suprapun caractere: \c{s} înseamnă, pratic "sedilă suprapusă sub s". Nu sunt 100% sigur dar cred că în pachetul latex pt română sunt toate caracterele (noi/vechi, bune/rele).

Nu văd altă metodă decât scriptare ca să în locuiești niște caractere corecte cu alte caractere corecte (corecte din punct de vedere al faptului că sunt ambele prezente în aceeaşi versiune a librăriei/pachetului/standardului).

.tex nu știe diacritice ci doar niște coduri ca să suprapună caractere, deci nu cred că șie să moifice automat \c{s} în \,{s} Sad.


Quote
Și în fișierele tex poți să introduci diacritice, pentru că de asta ai {inputenc} care se ocupă exact cu recunoașterea caracterelor
Adică eu pot să scriu ă și în sursă (fișierul .tex) să apară automat \u{a}?  NU ȘTIAM ASTA.
« Last Edit: August 04, 2007, 11:23:51 PM by laur3ooo » Logged

What direction?
Death or action!
Life begins at the intersection.
rs
Veteran
**

« Reply #5 on: August 05, 2007, 01:17:20 AM »

“rs, știe rospell să facă din \u{a}, ă și din \c{s}, ș nu ş? Reformulez, știe măcar să facă măcar caracterul vechi ş din \c{s}?”

In arhiva de cod de respell am doua functii (latex2utf8 si utf82latex) care fac translatarea fisierelor .tex cand acestea sunt citite de pe disc si translatarea inversa cand sunt scrise. Functiile se gasesc in fisierul latex.cpp. Folosesc versiunea cu cedile de utf8, evident codul poate fi schimbat foarte usor sa foloseasca versiuna de utf8 cu virgule. Nici macar nu ete nevoie de cunostinte de C/C++ ca sa o faci. Din pacate insa, odata modificarea facuta pierzi suportul de speller (care a fost scris in utf8 cu cedile) si suportul QT de translatare utf8 in alte formate iso.



“Dar din cate știu eu în fișiere tex nu există diacritice”

Incorect: http://db2latex.sourceforge.net/reference/rn33re369.html#ftn.id40606534
Evident, un inputenc in felul asta te duce tot la versiunea cu cedile.


“cu sedilă dar nu știu pentru cele noi/corecte dacă există așa ceva”

Cu 99,999% din software-ul pe care-l folosim dezvoltat afara, notiunea de corect inseamna strict cum a fost softul respective implementat, si nicidecum “ce vrea” muschii guvernului roman.

Fie vorba intre noi, cand a fost sa trimita un reprezentant la ISO sa le spuna cum arata diacriticele, guvernul roman a gasit de cuvinta sa trimita un analfabet, asa ne-am ales cu abominatia intitulata ISO-8859-2 (latin2 cu cedile). Practic tipul trebuia sa ia cu el un abecedar si atat; gurile rele spun ca pentru ca sa o gresesti in halul asta, analfabetismul nu-i suficient, trebuie sa mai fii si beat.


“folosesc latin10 în care ar trebui să fie suport pentru limba română (deci și ș ț) dar nu le recunoaște.”

Latin10 a fost declarat “deprecated” de ISO inca inainte sa apara – in paralel ISO standardiza Unicode (versiunea cu cedile). Nimeni nu-l implementeaza pe latin10, sau daca-l implementeaza nu te astepta sa fie testat cine stie ce. Vad probleme mari cu el in QT, in nici un caz nu m-as astepta sa-l gasesc in ceva atat de specializat si de o circulatie atat de redusa (comparativ cu QT) precum latex.


“am încercat să compilez rospell, dar n-am reușit pentru că nu găsește qt”

In semn de protest am editat acest raspuns in microsoft windows!


“Dacă nu găsesc nici mâine o să scriu cu cedile”

Stai pe cedile, sau cel putin pastreaza-ti documentele originale cu cedile. Pe cedile ai spellere, editoare, support de development. Pe virgule nu ai nimic, nici macar un QT corect.

Nu vad cum se va putea trece de la utf8 cu cedile la utf8 cu virgule dupa cate documente (include aici dexonline, wikipedia, situri literare, o Moldova ex-sovietica) si cat software (scris afara din tara dupa cum am zis) exista deja. Este naiv sa credem ca guvernul da o lege si peste noapte toata lumea sa apuca sa modifice codul utf8 cu cedila in cod utf8 cu virgula prin toate documentele existente si prin toate bucatile de software din lume. Cat despre ISO ce sa mai vorbim, nici macar n-au vazut intenetul venind – ei si acum mai bat campii cu cele 7 layere de comnicatii. Not something to be trusted! Mai rau, nici guvernul si nici ISO nu vor misca un deget sa resolve problema, dimportiva, vor da cat mai multe legi care se vor bate cap in cap si vor crea si mai multa confuzie. Cel mai bine este sa-i ignoram.

Solutia cea mai simpla cred eu este sa vorbim cu cei de la xorg-x11 sa schimbe cedilele in virgule prin toate fonturile. Inteleg ca cei de la Adobe au rezolvat problema in felul asta.

Daca gaseste cineva un hack sa printuiasca din latex s si t cu virgule imi spuneti si mie.



Logged

cristiklein
Membru
*

« Reply #6 on: August 29, 2007, 10:24:58 PM »

Salut,

Sper să nu vin prea târziu cu răspunsul.

Eu folosesc un derivat de Ubuntu, numit Kiwi, în care mi-am instalat latex-ucs și latex-ucs-contrib. Apoi, folosind gedit, scriu documente UTF8, care încep în felul următor:

\documentclass[a4paper,12pt]{article}
\usepackage{ucs}
\usepackage[utf8x]{inputenc}
\begin{document}
Să fie diacritice corecte: ăâîșțĂÂÎȘȚ ... și au fost diacritice corecte ... .
\end{document}

Spor, și happy diacritics.
Logged
mutulica
Membru
*

« Reply #7 on: September 06, 2007, 09:56:37 AM »

Stai pe cedile, sau cel putin pastreaza-ti documentele originale cu cedile. Pe cedile ai spellere, editoare, support de development. Pe virgule nu ai nimic, nici macar un QT corect.

Nu vad cum se va putea trece de la utf8 cu cedile la utf8 cu virgule dupa cate documente (include aici dexonline, wikipedia, situri literare, o Moldova ex-sovietica) si cat software (scris afara din tara dupa cum am zis) exista deja. Este naiv sa credem ca guvernul da o lege si peste noapte toata lumea sa apuca sa modifice codul utf8 cu cedila in cod utf8 cu virgula prin toate documentele existente si prin toate bucatile de software din lume. Cat despre ISO ce sa mai vorbim, nici macar n-au vazut intenetul venind – ei si acum mai bat campii cu cele 7 layere de comnicatii. Not something to be trusted! Mai rau, nici guvernul si nici ISO nu vor misca un deget sa resolve problema, dimportiva, vor da cat mai multe legi care se vor bate cap in cap si vor crea si mai multa confuzie. Cel mai bine este sa-i ignoram.

Trecerea trebuie să se facă treptat şi a început deja. Vista a trecut la diacriticele cu virgulă, Debian va trece când lenny va deveni stabil.
Mai multe informaţii:
http://www.secarica.ro/
http://wiki.debian.org/L10N/Romanian/CommaTransition?highlight=%28romanian%29

Problema este că foarte mulţi nu ştiu să scrie aplicaţii care să cunoască UTF-8, şi cei care folosesc aplicaţii care ştiu UTF-8 nu ştiu să le configureze corect. (apache, servere de mail care trimit conţinut în iso-8859-x)

Quote
Daca gaseste cineva un hack sa printuiasca din latex s si t cu virgule imi spuneti si mie.
încearcă pe diacritice@googlegroups.ro, poate cineva de acolo ştie.



« Last Edit: September 06, 2007, 09:58:49 AM by mutulica » Logged
Laurențiu Roman
Membru
*

Here comes the...


WWW
« Reply #8 on: September 06, 2007, 03:29:00 PM »

Diacriticile corecte sunt cu adevărat folositoare doar pentru imprimare, dacă materialul nu va fi imprimat, nu prea are sens să le folosești pe cele corecte. Cum zice mutulica, mulți nu scriu aplicații UTF8, și dacă sunt scrise nu folosesc standardele și fonturile corecte.
Logged

What direction?
Death or action!
Life begins at the intersection.
rs
Veteran
**

« Reply #9 on: September 07, 2007, 02:40:51 AM »

> Cum zice mutulica, mulți nu scriu aplicații UTF8, și dacă sunt scrise
> nu folosesc standardele și fonturile corecte.

Hai ca m-ati dat gata! Ce legatura exista intre programator si computerul pe care-ti rulezi tu programul? Daca l-ai setat cu picioarele normal ca nu va merge. Utf8 impreuna cu C, C++ si Unix au fost inventante de aceeasi echipa de oameni de la Bell Labs. Este foarte greu in momentul de fata sa scrii un program care nu functioneaza corect in utf8. X11 de exemplu prelucreaza totul intern in utf8 de prin 1995. Browserul tau merge intern tot utf8. Practic, tot ce misca la tine pe computer merge intern utf8. Daca nu-ti apare nimic utf8 pe ecran ai o problema de setup. Cel mai bun test pe care poti sa-l faci este sa deschizi o fereastra de terminal si sa dai un "cat" la un fisier cu diacritice. Daca nu le vezi, poti sa incepi un distrowar cu cei de la care ai distributia. Putine din ele dau drumu implicit la interfete in utf8 (de ex. Fedora era setata in utf8 inca de la core1). De obicei distrourile voastre se limiteaza la latin1 ca pentru americani.

> Daca gaseste cineva un hack sa printuiasca din latex s si t cu virgule imi spuneti si mie.
>> încearcă pe diacritice@googlegroups.ro, poate cineva de acolo ştie.

Pai a dat cristiklein un exemplu mai sus, multumesc Cristi! Problem closed.

Uite aici o alta versiune, daca vreti sa va distrati:

Code:
\documentclass[a4paper,10pt]{article}

\begin{document}

\makeatletter
\ProvideTextCommandDefault\ro[1]
  {\hmode@bgroup\ooalign{\null#1\crcr\hidewidth\raise-.31ex
   \hbox{\check@mathfonts\fontsize\ssf@size\z@
   \math@fontsfalse\selectfont,}\hidewidth}\egroup}


O gr\u{a}mad\u{a} de diacritice:
\u{a}\ro{s}\^{a}\ro{t}\^{i}\u{A}\ro{S}\^{A}\ro{T}\^{I}.


\end{document}
Logged

Pages: [1]   Go Up
  Print  
 
Jump to: