LaTeX + listings + ékezet

Fórumok

Szeretnék írni egy LaTeX példákból álló dokumentumot, aminek függelékében ott lenne a doksi forrása. Ezt a listings segítségével ágyaznám be, hogy a kódkiemelés meglegyen. A probléma az, hogy az ékezeteket nem igazán úgy kezeli a listings, ahogy én azt szeretném.Az idevágó kódrészletek:


% Ez a doksi első sora.

\usepackage[utf8]{inputenc}
\usepackage[magyar]{babel}

\usepackage{listings}

\lstinputlisting[language=TeX]{doksi.tex}

Ha így probálom lefordítani ( PDF-be ), akkor ezzel a hibaüzenettel szembesülök:


! Package inputenc Error: Unicode char \u8:�\expandafter not set up for use with LaTeX.

See the inputenc package documentation for explanation.
Type  H <return>  for immediate help.
 ...                                              
                                                  
l.1 % Ez a doksi első 
                       sora.
? 

Ha beállítom az \lstset{extendedchars=false} opciót, akkor a PDF ugyan legenerálódik, de pl. az 'első' helyett 'őels' jelenik meg, és minden egyéb ékezetes betűt tartalmazó szóban a szó elejére kerülnek az ékezetesek.

Ugyan a listings leírásában olvastam az \escapebegin \escapeend párosról, de ezekkel az a baj, hogy ( ha jól értem ) csak a doksi adott blokkjában ( pl. kommentek ) értelmezi a különleges karaktereket. Nekem olyan megoldás kellene, ami az egész forráskódban normálisan írja ki az ékezetes karaktereket.

Hozzászólások

És ha a verbatim környezetet használnád? A moreverb tud fájlokat verbatim beolvasni.
Ez alapján csinálnám.

OMG facepalm...
Szoftver, amelyik 2011-ben nem bír ékezetes betűket használni. Kukában a helye.
A linkelt oldal meg vastagon hangsúlyozza, hogy solution, ha minden ékezetes betűt egyenként aposztrófok közé kell tenni. Megoldás, az persze.
Bocs hogy nem vagyok konstruktív, de eldurran az agyam amikor ilyen szoftverekről hallok...

Amellett hogy egyetértek: Ha holnap reggel nyolckor használhatatlanná válna minden szoftver, ami nem kezeli az utf(-8)-at, akkor az IT-ipar ízelítőt kapna a világvégéből.

A konkrét ügyben: Az adott listings csomagot készítő személy(eke)t vélhetőleg a napi munkája során nem zavarja, hogy nincs utf8 támogatás. Egyszerűen azért, mert a világnak azon a részén él(nek), ahol utf8 nélkül is mindent meg tud(nak) oldani. A LaTeX erről nem tehet. A LaTeX a verbatim környezetet nyújtja a forrás beszúrására. Sokszor ez is elég, és ez kezeli az utf8-at. Ha többet akarsz, mint amit a verbatim környezet nyújt, akkor egy külső csomagot kell használni, vagy a verbatim környezetet kell "hackelni". Az általam ismert külső csomagok közül a listings képes több szolgáltatást nyújtani (a verbatim-hoz képest). Ennek a csomagnak a hátránya, hogy nem kezeli az utf8-at. Három lehetőség maradt:
- Új csomag készítése a forrás beszúrására.
- A meglévő listings csomag módosítása, hogy kezelni tudja a több bájtos karaktereket.
- A verbatim csomag használata, esetleg "hackelés" után.
- +1: Bónusz lehetőség: nem használtad a LaTeX-et, de most lehetőséget látsz arra, hogy bizonyítsd, szar az egész.

Magánvélemény: Az általánosítás soha nem vezet jóra.

-----
"Én vagyok a hülye, hogy leállok magával vitatkozni."

Amellett hogy egyetértek: Ha holnap reggel nyolckor használhatatlanná válna minden szoftver, ami nem kezeli az utf(-8)-at, akkor az IT-ipar ízelítőt kapna a világvégéből.
Attól, hogy ez van, még nem jó.

A konkrét ügyben: Az adott listings csomagot készítő személy(eke)t vélhetőleg a napi munkája során nem zavarja, hogy nincs utf8 támogatás. Egyszerűen azért, mert a világnak azon a részén él(nek), ahol utf8 nélkül is mindent meg tud(nak) oldani.
Én sem gondoltam, hogy gonoszságból nincs benne.

Én pl. csak azért néztem rá a csomagra, mert nem tudtam elképzelni, hogy egy latex csomag ne tudna ilyet, miközben a rendszer egyik legfontosabb képessége (sztm) az, hogy elég i18n barát.
Amellett, hogy egyetértek veled, és esküszöm, hogy letöltöttem a forrást és megnéztem, hátha megtalálom a hogy hol lehet javítani, elég nehéz átlátni a dolgot.

A magánvéleményed egy általánosítás, ami állítólag soha nem vezet jóra ;-).

Generald ki valami highlighterrel ps-be, es emeld be a latex doksiba. Ugyis pdf-et gyartasz belole a vegen, igy meg meg szep is lesz.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal 

Tudomásom szerint a listing csomag nem támogatja az utf8-at, így "trükk" nélkül nem fogod megúszni.

Az egyik lehetőség:
- Az inputenc csomagnál latin2-es kódolás
- recode UTF-8..latin2 doksi.tex
- Annyit lehet csalni, hogy a doksi.tex ugyan latin2-es kódolású, de az inputenc-nél átírod a kódolást utf8-ra. Ilyenkor természetesen nem a doksi.tex-et, hanem az átíratlan változatot fordítod.

-----
"Én vagyok a hülye, hogy leállok magával vitatkozni."

Üdv, én is hasonló problémával állok szemben, bár engem nem zavarna az hogy nincs utf-8 (annyira..), csak nekem ennyit se csinál meg:
\documentclass{article}
\usepackage{listings}
\begin{document}
\lstset{language=Pascal}
Insert Pascal examples here.
\end{document

Azt írja rá, hogy elfelejtettem lezárni valamit. De ha mást próbálok, (netről copyzott) példákat, amik mondjuk ugyanilyenek, akkor sem akarja azt amit én. Ötletek?
------------------------
Everyone is a winner*

Egyfelől a \end{document sor valóban hibás, másfelől ha az "Insert Pascal example here." részt kódként akarod megjeleníteni, akkor még egy dolog hiánycikk:


\begin{lstlisting}
Insert ...
\end{lstlisting}

--
Azt akarom, hogy az emberek ne kényszerből tanuljanak, hanem azért, mert tudni akarnak.

Köszönöm. Viszont kérdésem hogy ennek így kell megjelennie?
\documentclass{article}
\usepackage{listings}
\begin{document}
\lstset{language=c}
\begin{lstlisting}
#include

int main()
{
setbuf(stdout, NULL); // Kikapcsolja a bufferelest
printf(myid);
printf(mytask);
return(0);
}
\end{lstlisting}
\end{document}

Kép
------------------------
Everyone is a winner*

Nem akarok nagyon értetlennek tűnni, de ezt az oldalt már néztem, és még mindig nem kóser. Ha így csinálom akkor ezt kapom üzenetként:

!Undefined control sequence
\lst@fillcolor->\color{white}

A 27. sorra mondja ezt.

Ha pedig ezt használom:
\lstset{language=C,caption=Descriptive Caption Text,label=DescriptiveLabel}
Akkor nem formáz rajta semmit. Nem kéne még valami csomagot behúznom az elején?

------------------------
Everyone is a winner*