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.
- 5055 megtekintés
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.
- A hozzászóláshoz be kell jelentkezni
Ez alapján mondhatjuk nagyjából "működik":
http://trobter.wordpress.com/2010/05/15/special-characters-in-latex-lis…
Esetleg source-highlight -n -f latexcolor -t 3 -i xxx -o yyy
Aztán \input{yyy}
A Makefile-t sztm nem úszod meg...
- A hozzászóláshoz be kell jelentkezni
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...
- A hozzászóláshoz be kell jelentkezni
Szerintem is siralmas. Azért tettem idézőjelbe hogy "működik"...
LaTeX tud ékezetet kezelni, "csak" a listings package nem.
- A hozzászóláshoz be kell jelentkezni
A listings csomag kezeli az ékezeteket. A több bájtos karaktereket nem kezeli. Ezek egyik fajtája az utf8, de az ázsiai karakterekkel is gond lesz.
-----
"Én vagyok a hülye, hogy leállok magával vitatkozni."
- A hozzászóláshoz be kell jelentkezni
Vagyis nem kezeli. Az ISO kodolasokat felejtsuk mar el.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal
- A hozzászóláshoz be kell jelentkezni
+1
XXI. században az ékezet = UTF.
- A hozzászóláshoz be kell jelentkezni
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."
- A hozzászóláshoz be kell jelentkezni
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 ;-).
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
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."
- A hozzászóláshoz be kell jelentkezni
Ü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*
- A hozzászóláshoz be kell jelentkezni
\end{document}
-----
"Én vagyok a hülye, hogy leállok magával vitatkozni."
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
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*
- A hozzászóláshoz be kell jelentkezni
Igen - ahogy néztem a függvényneveket általában nem emeli ki, csak a típusokat. De valszeg ezt is be lehet valahol állítani.
Vagy ha nem ez a baj vele, akkor mi a kérdés pontosan?
--
Azt akarom, hogy az emberek ne kényszerből tanuljanak, hanem azért, mert tudni akarnak.
- A hozzászóláshoz be kell jelentkezni
Csak ennyit akartam. Reméltem hogy jobban formáz, és azt hittem nem csinálja meg, de akkor majd beállítom.
------------------------
Everyone is a winner*
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
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*
- A hozzászóláshoz be kell jelentkezni
De. Be kéne még valami csomagot húznod az elején:
"backgroundcolor=\color{white}, % choose the background color. You must add \usepackage{color}"
-----
"Én vagyok a hülye, hogy leállok magával vitatkozni."
- A hozzászóláshoz be kell jelentkezni
Megvan, köszönöm szépen!
------------------------
Everyone is a winner*
- A hozzászóláshoz be kell jelentkezni