abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
eParkomat, startup z ČR, postoupil mezi finalisty evropského akcelerátoru ChallengeUp!
Robot na pivo mu otevřel dveře k opravdovému byznysu
Internet věcí: Propojený svět? Už se to blíží...
dnes 12:00 | Zajímavý projekt

Projekt Termbox umožňuje vyzkoušet si linuxové distribuce Ubuntu, Debian, Fedora, CentOS a Arch Linux ve webovém prohlížeči. Řešení je postaveno na projektu HyperContainer. Podrobnosti v často kladených dotazech (FAQ). Zdrojové kódy jsou k dispozici na GitHubu [reddit].

Ladislav Hagara | Komentářů: 0
dnes 11:00 | Bezpečnostní upozornění

Byly zveřejněny informace o bezpečnostní chybě CVE-2016-8655 v Linuxu zneužitelné k lokální eskalaci práv. Chyba se dostala do linuxového jádra v srpnu 2011. V upstreamu byla opravena minulý týden [Hacker News].

Ladislav Hagara | Komentářů: 0
včera 22:00 | Komunita

Přibližně před měsícem bylo oznámeno, že linuxová distribuce SUSE Linux Enterprise Server (SLES) běží nově také Raspberry Pi 3 (dokumentace). Obraz verze 12 SP2 pro Raspberry Pi 3 je ke stažení zdarma. Pro registrované jsou po dobu jednoho roku zdarma také aktualizace. Dnes bylo oznámeno, že pro Raspberry Pi 3 je k dispozici také nové openSUSE Leap 42.2 (zprávička). K dispozici je hned několik obrazů.

Ladislav Hagara | Komentářů: 5
včera 06:00 | Zajímavý software

OMG! Ubuntu! představuje emulátor terminálu Hyper (GitHub) postavený na webových technologiích (HTML, CSS a JavaScript). V diskusi k článku je zmíněn podobný emulátor terminálu Black Screen. Hyper i Black Screen používají framework Electron, stejně jako editor Atom nebo vývojové prostředí Visual Studio Code.

Ladislav Hagara | Komentářů: 31
včera 06:00 | Zajímavý článek

I letos vychází řada ajťáckých adventních kalendářů. QEMU Advent Calendar 2016 přináší každý den nový obraz disku pro QEMU. Programátoři se mohou potrápit při řešení úloh z kalendáře Advent of Code 2016. Kalendáře Perl Advent Calendar 2016 a Perl 6 Advent Calendar přinášejí každý den zajímavé informace o programovacím jazyce Perl. Stranou nezůstává ani programovací jazyk Go.

Ladislav Hagara | Komentářů: 9
3.12. 16:24 | Nová verze

Byla vydána Mageia 5.1. Jedná se o první opravné vydání verze 5, jež vyšla v červnu loňského roku (zprávička). Uživatelům verze 5 nepřináší opravné vydání nic nového, samozřejmě pokud pravidelně aktualizují. Vydání obsahuje všechny aktualizace za posledního téměř půldruhého roku. Mageia 5.1 obsahuje LibreOffice 4.4.7, Linux 4.4.32, KDE4 4.14.5 nebo GNOME 3.14.3.

Ladislav Hagara | Komentářů: 17
3.12. 13:42 | Pozvánky

V Praze probíhá konference Internet a Technologie 16.2, volné pokračování jarní konference sdružení CZ.NIC. Konferenci lze sledovat online na YouTube. K dispozici je také archiv předchozích konferencí.

Ladislav Hagara | Komentářů: 0
2.12. 22:44 | Komunita

Joinup informuje, že Mnichov používá open source groupware Kolab. V srpnu byl dokončen dvouletý přechod na toto řešení. V provozu je asi 60 000 poštovních schránek. Nejenom Kolabu se věnoval Georg Greve ve své přednášce Open Source: the future for the European institutions (SlideShare) na konferenci DIGITEC 2016, jež proběhla v úterý 29. listopadu v Bruselu. Videozáznam přednášek z hlavního sálu je ke zhlédnutí na Livestreamu.

Ladislav Hagara | Komentářů: 25
2.12. 15:30 | Zajímavý projekt

Společnost Jolla oznámila v příspěvku Case study: Sailfish Watch na svém blogu, že naportovala Sailfish OS na chytré hodinky. Využila a inspirovala se otevřeným operačním systémem pro chytré hodinky AsteroidOS. Použita je knihovna libhybris. Ukázka ovládání hodinek na YouTube.

Ladislav Hagara | Komentářů: 17
2.12. 14:15 | Nová verze

Byla vydána verze 7.1.0 skriptovacího jazyka PHP používaného zejména k vývoji dynamických webových stránek. Jedná se o první stabilní verzi nejnovější větvě 7.1. Přehled novinek v dokumentaci. Podrobnosti v ChangeLogu. K dispozici je také příručka pro přechod z PHP 7.0.x na PHP 7.1.x.

Ladislav Hagara | Komentářů: 5
Kolik máte dat ve svém domovském adresáři na svém primárním osobním počítači?
 (32%)
 (24%)
 (29%)
 (7%)
 (5%)
 (3%)
Celkem 774 hlasů
 Komentářů: 50, poslední 29.11. 15:50
Rozcestník
Reklama

Dotaz: latex - dlouhá slova a zalamování

29.4.2007 14:36 oxd
latex - dlouhá slova a zalamování
Přečteno: 15549×
Dobrý den, jsem začátečník v latexu a mám takovýto problém:

Dlouhá slova, která se už nevlezou na konec řádku se nezalomí ale přesáhnou okraj. Pokud to chci napravit a před dlouhé slovo vložím příkaz \newline slovo na konci dalšího řádku opět přečuhuje.

Zde je ukázka: obrázek

Kde dělám chybu a jak přinutit latex, aby správně zalamoval dlouhá slova?

Díky moc!

Odpovědi

Josef Kufner avatar 29.4.2007 17:51 Josef Kufner | skóre: 66
Rozbalit Rozbalit vše Re: latex - dlouhá slova a zalamování
Roz\-\-luj je.
Hello world ! Segmentation fault (core dumped)
29.4.2007 19:09 oxd
Rozbalit Rozbalit vše Re: latex - dlouhá slova a zalamování
Rozdělení Jmé\-no opravdu funguje. Skvělý! Je nějaký způsob jak Latex přinutit, aby nepřesahoval šířku řádku a dlouhé texty v mat. prostředí dával na další řádek? Abych nemusel psát \newline, \linebreak.
29.4.2007 18:03 Paulus | skóre: 14 | Jihlava
Rozbalit Rozbalit vše Re: latex - dlouhá slova a zalamování
LaTeXu samozřejmě můžeš říct, jak slova lámat pomocí sekvence \-. Například. Dlou\-ha\-tán\-ský. Pokud ti nerozdělí slovo "Jméno", tak to asi znamená, že nemůže najít vzory pro české dělení slov. Nevím, jakou distribuci TeXu máš a jestli obsahuje CSLaTeX. Zkus raději místo příkazu latex, použít cslates (u mě ale malinko zlobí, když je vstupní soubor v kódování UTF-8).
29.4.2007 18:42 Marble | skóre: 27 | blog: marble | Švédsko
Rozbalit Rozbalit vše Re: latex - dlouhá slova a zalamování
Ne. Pokud je to v LaTeXu stejně jako v plainu (předpokládám), tak při dělení slov nenechává na začátku řádku méně než tři znaky a na konci řádku méně než dva znaky (ale počítá se do toho myslím případná interpunkce). Takže rozdělení "konec vě/ty." funguje, ale "a/hoj" a "vě/ta" ne.

Ovlivnit se to dá proměnnými \lefthyphenmin a \righthyphenmin (výchozí hodnoty jsou 2 a 3).

29.4.2007 18:49 Paulus | skóre: 14 | Jihlava
Rozbalit Rozbalit vše Re: latex - dlouhá slova a zalamování
Aha, tak to jsem nevěděl. Tím by se leccos vysvětlovalo.
29.4.2007 19:10 oxd
Rozbalit Rozbalit vše Re: latex - dlouhá slova a zalamování
Ať \lefthyphenmin a \righthyphenmin nastavím jak nastavím výsledek je pořád stejný.
29.4.2007 19:28 Marble | skóre: 27 | blog: marble | Švédsko
Rozbalit Rozbalit vše Re: latex - dlouhá slova a zalamování
Funguje to přibližně takto (první odstavec přeteče, druhý ne):

\parindent=0pt\hsize=7em
Test dělení slova do řádků.\par
\righthyphenmin=2
Test dělení slova do řádků.\par
\bye

Takhle by to mělo fungovat v čemkoliv, co si řáká TeX (testováno v plainu, nechce se mi hledat, jak se píšou LaTeXové hlavičky, ale fakt nevidím důvod, proč by se měl LaTeX chovat jinak). Můžeš sem dát ukázkový zdroják, ve kterém ti to nefunguje?

Jinak algoritmus zlomu řádek se dá ovlivnit ještě dalšími proměnnými a pro poměrně úzkou sazbu může být občas nějaká úprava potřeba, ale to už je na delší povídání. To už spíš odkážu na TeXbook naruby od Olšáka. :)

29.4.2007 19:44 Paulus | skóre: 14 | Jihlava
Rozbalit Rozbalit vše Re: latex - dlouhá slova a zalamování
No tak třeba u mě v LaTeXu se oba řádky chovají naprosto stejně - tj. oba se lámou:
Test dělení slova
do řádků.
Píšu 12ti bodovým písmem.
29.4.2007 19:48 Marble | skóre: 27 | blog: marble | Švédsko
Rozbalit Rozbalit vše Re: latex - dlouhá slova a zalamování
Tohle bylo nastaveno na 10bodové písmo. Jinak je třeba asi trochu snížit \hsize, aby se to lámalo už uprostřed slova.
1.5.2007 16:23 oxd
Rozbalit Rozbalit vše Re: latex - dlouhá slova a zalamování
díky moc, nakonec jsem našel na internetu tenhle kód:
\emergencystretch=0pt
\pretolerance=150
\tolerance=250
\hbadness=150
\hfuzz=0pt
a po něm už žádný přesah nemám. Sice nevím proč, ale funguje to :)
2.5.2007 13:52 oxd
Rozbalit Rozbalit vše Re: latex - dlouhá slova a zalamování
Zjistil jsem další možné řešení. Stačí použít příkaz
\sloppy
a slova už nebudou přesahovat konec řádku.
29.4.2007 19:46 Marble | skóre: 27 | blog: marble | Švédsko
Rozbalit Rozbalit vše Re: latex - dlouhá slova a zalamování
A co se týká zalamování té matiky. Nejčistší řešení je za backslash, ve kterém by se to mohlo lámat přidat \discretionary{}{\the\textfont2\char"6E}{}, případně si rovnou předefinovat makro \backslash tak, aby tento kód obsahovalo, a pak se bude v matice backslash lámat s tím, že se navíc zopakuje na příštím řádku.
1.5.2007 16:43 oxd
Rozbalit Rozbalit vše Re: latex - dlouhá slova a zalamování
Ten zlom za lomítkem mě zajímá. Mohl by jsi nějak upřesnit jak to funguje? Zkoušel jsem předefinovat příkaz \backslash:
\renewcommand{\backslash}[1]{\backslash\discretionary{}{\the\textfont2\char"6E}{}}
ale latex mi vypíše jen chybu "Tex capacity exceeded, sorry [input stack=5000]". předpokládám, že je to kvůli příkazu \backslash v těle nového příkazu. Dochází asi k nekonečné rekurzi.

Když příkaz pojmenuju jinak (např. \bslash), tak to funguje, ale nastanou 2 problémy:
1. za lomítkem chybí 1. znak: $AA\bslash BB\bslash CC$ vypíše AA\B\C
2. pokud slovo na konci řádku nevyjde, šířku řádku přesáhne (blbá matika :-( )
Tak mě ještě napadlo, je nějaký způsob, jak psát lomítko vně prostředí matiky? Matiku totiž používám na proměnné v textu a ta to celá kazí. Kdyby existoval způsob jak zvýraznit text stejně jako v mat. prostředí $$ a fungovaly by lomítka, pak bych mat. prostředí nemusel vůbec používat a neměl bych problém s přesahem.
1.5.2007 17:32 Marble | skóre: 27 | blog: marble | Švédsko
Rozbalit Rozbalit vše Re: latex - dlouhá slova a zalamování
Omlouvám se, ale LaTeX fakt neznám. :( To že to sežere jeden znak za znamená, že jsi nadefinoval makro s jedním parametrem. Musíš to definovat bez parametrů. (Že by ta jednička v hranatých závorkách?) Co přesně dělá LaTeXovský \newcommand nevím, takže bohužel ani nedokážu říct, proč se mu nelíbí stejný název makra. Ale pokud řešení, co píšeš nevadí, tak bych to dál neřešil. :)

Ad nevyjde na konec řádku -- no pokud není míst zlomu dostatek vzhledem k povoleným roztažení a stažení různých mezer (mezi slovy), tak se prostě zlom vyřešit nedá. Možnost je poněkud přestylyzovat text, přidat další místa k dělení (ale jestli povolit dělení pomlčkou názvů proměnných nevím ...) atd. Univerzální postup bohužel neexistuje.

Ad backslash mimo matiku. Máš návod v mém předchozím příspěvku. :) Obsah \discretionary se sází mimo matiku. Takže stačí jen nadefinovat backslash jako {\the\textfont2\char"6E}. Takhle definovaný backslash nebude umět narozdíl od toho standardního, co je definován jako delimiter, růst, ale to tady asi neva. Ještě lépe jej definovat stylem \def\bs{\discretionary{\the\textfont2\char"6E}{\the\textfont2\char"6E}{\the\textfont2\char"6E}}, takže se bude i dělit na konci řádku. Ale nevím jak moc to celé pomůže oproti matice ...

Zvýraznění jako v matice ... font, co se používá na značky proměnných je myslím standardní kurziva, v matematice je jen jiné mezerování (pro psaní celých slov mnohem ošklivější :), protože se předpokládá, že veličiny se značí jen jedním písmenkem. Takže nadefinovat backslash jak jsme zmínil výše a psát kurzivou.

1.5.2007 22:09 oxd
Rozbalit Rozbalit vše Re: latex - dlouhá slova a zalamování
Tak to je paráda! Příkaz \bs funguje bezvadně. Díky moc! Je vidět, že tomu rozumíš. Po napsání \texttt{A\bs B\bs C\bs D\bs E} se to krásně vysází jako A\B\C\D\E.

Vím, že už bylo dotazů dost, ale uměl by jsi nadefinovat příkaz, který by to ještě více zpřehlednil? Např. aby \mytext{A\B\C\D\E} vysázelo to samé jako \texttt{A\bs B\bs C\bs D\bs E} ? Nevim jak nahradit automaticky to lomeno za \bs.
1.5.2007 22:48 Marble | skóre: 27 | blog: marble | Švédsko
Rozbalit Rozbalit vše Re: latex - dlouhá slova a zalamování
No backslash sice předefinovat můžeš, ale asi by tě potom nepotěšilo, že nejde zadávat ostatní makra. V principu můžeš v TeXu (až na pár vyjímek) přiřadit libovolnému znaku (ve významu ASCII hodnoty) libovolnou funkci (v TeXovské terminologii catcode). Jenže se asi neobejdeš bez nějakého znaku s \catcode=0, který slouží jako uvození řídících sekvencí. Standardně je to právě backslash, v principu ti nic nebrání si nadefinovat \catcode0 třeba pro zavináč a pak psát {tohle bude {@it kurziva}}, ale nevím, jestli to tak úplně chceš. :) Naopak si můžeš vybrat nějaký nepoužívaný znak (třeba zas ten zavináč), přiřadit mu \catcode 13 (aktivní znak), což znamená, že pak se může jako makro použít sám bez potřeby uvození backslashem (standardně má tuhle kategorii třeba vlnka). Pokud pak provedeš něco jako \catcode`\@=13\def@{\discretionary...}, tak pak můžeš používat zavináč jako backslash.

Tož asi tak ... prostě nemůžeš po TeXu chtít, aby sám od sebe uhádl, jestli chceš použít backslash jako uvození řídící sekvence, nebo explicitní backslash. :)

2.5.2007 00:13 oxd
Rozbalit Rozbalit vše Re: latex - dlouhá slova a zalamování
Já měl na mysli něco takového: \newcommand{\path}[1]{\texttt{\verb*'#1'}} V textu pak píšu např.: cesta k souboru je \path{\etc\bla\bla}.

Nemyslel jsem to na celý dokument, jen v té části příkazu. Chtěl bych předefinovat znak \ a / a ~ tak aby tento příkaz korektně vysázel cestu, která se bude lámat v \ a / a nebude se lámat na znaku -. Prostě takový univerzální příkaz, který mi vysází cestu a nemusel bych potom pořád psát pro každé lomítko \bs.
2.5.2007 01:46 Marble | skóre: 27 | blog: marble | Švédsko
Rozbalit Rozbalit vše Re: latex - dlouhá slova a zalamování
OK, už chápu. :)

Zakázání dělení uprostřed slov se dá udělat nejjednodušeji tím, že se \hypenchar pro daný font nastaví na hodnotu -1 (v \tt fontu je to tak standardně, jinde by bylo potřeba nastavit).

Vlnka je už sama od sebe aktivním znakem, takže není problém ji předefinovat na \char"7E (znak vlnky). Nadefinovat slash jako aktivní znak také není problém: \catcode`\/=13\def/{\discretionary...}

S backslashem bude srandy trochu víc ... nejjednodušší je předem si nějaký jiný znak, který určitě nebude v cestě, předefinovat na \catcode0, tím si ušetříš spoustu problémů. :) Třeba takhle: {\catcode`\*=0\catcode`*\=13*def\{*discretionary...}} No a koneckonců, pak si tu hvězdičku zas můžeš předefinovat zpátky na \catcode12, kdyby to bylo potřeba.

Jo .. a nezapomínat na závorky, ať ty definice a upravené \catcode nevylezou mimo makro. :)

2.5.2007 02:19 Marble | skóre: 27 | blog: marble | Švédsko
Rozbalit Rozbalit vše Re: latex - dlouhá slova a zalamování
Hm, tak jsme se nad tím trochu zamyslel, a není to úplně triv. Řešení vypadá asi následovně:
{\catcode`\|=0\catcode`\/=13\catcode`\*=13\catcode`\\=13%
|global|def|path{|begingroup%
        |def*{|endgroup}
        |def~{|char"7E}|catcode`|/=13|def/{|discretionary{|char"2F}{|char"2F}{|char"2F}}%
        |catcode`|*=0|catcode`|\=13|def\{|discretionary{|char"5C}{|char"5C}{|char"5C}}%
        |tt|catcode`|*=13%
}}

A cesta se pak píše přibližně takto: Soubor je v adresáři \path /tohle/je\cesta/s\~vlnkami/konec*, anebo někde jinde.

Kvůli změně kategorií se to nedá nijak jednoduše (jestli vůbec) dostat do makra s parametrem, takže je potřeba zvlášť začínací a ukončovací makro. V tomhle případě je ukončovací makro hvězdička.

Vysvětlení té ukázky hledej v TeXbooku naruby, anebo řekni, co není jasné a zkusím vysvětlit.

2.5.2007 02:21 Marble | skóre: 27 | blog: marble | Švédsko
Rozbalit Rozbalit vše Re: latex - dlouhá slova a zalamování
Jo a to |catcode`|*=0 je tam samozřejmě nanic a klidně může být vyhozeno. Mi tam prolezlo omylem ...
2.5.2007 13:50 oxd
Rozbalit Rozbalit vše Re: latex - dlouhá slova a zalamování
Funguje to parádně!
{\catcode`\|=0\catcode`\/=13\catcode`\*=13\catcode`\\=13
|global|def|path{
|begingroup
|def*{|endgroup}
|def~{|char"7E}
|catcode`|/=13|def/{|discretionary{|char"2F}{|char"2F}{|char"2F}}
|catcode`|\=13|def\{|discretionary{|char"5C}{|char"5C}{|char"5C}}
|tt|catcode`|*=13
}}
Zkoušel jsem přijít na význam a chápu to takhle:
% nastaví znak | ve významu uvozování příkazu, znaky / * \ budou příkazy
\catcode`\|=0\catcode`\/=13\catcode`\*=13\catcode`\\=13

% co je global nevím, ale |def|path{ nadefinuje nový příkaz path
|global|def|path{

% begingroup znamená, že asi začíná skupina, ale proč je to zrovna tady nevím
|begingroup

% definice příkazů: * bude ukončovat skupinu, ~ se vytiskne jako ~, 
|def*{|endgroup}
|def~{|char"7E}

% proč je tu znova řečeno, že / bude příkaz nevím, následuje definice příkazu /
|catcode`|/=13|def/{|discretionary{|char"2F}{|char"2F}{|char"2F}}

% proč je tu znova řečeno, že \ bude příkaz nevím, následuje definice příkazu \
|catcode`|\=13|def\{|discretionary{|char"5C}{|char"5C}{|char"5C}}

% |tt nastaví strojové písmo a proč je tu řečeno, že * je příkaz ???
|tt|catcode`|*=13
Pokoušel jsem se přidat příkazy, aby i podtržítko bylo obyčejný znak. Nejprve jsem zkusil:
{\catcode`\|=0\catcode`\/=13\catcode`\*=13\catcode`\\=13\catcode`\_=13
|global|def|path{
|begingroup
|def*{|endgroup}
|def~{|char"7E}
|def_{|char"5F}
|catcode`|/=13|def/{|discretionary{|char"2F}{|char"2F}{|char"2F}}
|catcode`|\=13|def\{|discretionary{|char"5C}{|char"5C}{|char"5C}}
|tt|catcode`|*=13
}}
ale to mi latex nezkousl. Nevím proč :(

Zkoušel jsem, zkoušel jsem, zkoušel jsem a nakonec se mi podařilo přidat podtržítko, ale vůbec nevím proč to tak funguje. Na konec jsem prostě přidal místo

|tt|catcode`|*=13
sekvenci:
|tt|catcode`|*=13|catcode`_=12

Zkoušel jsem ještě vytvořit nový příkaz tak, abych mohl používat \path{...} místo \path ...*. Začal jsem postupně. Nejprve jsem chtěl aby \path{} sázelo lomítka normálně. Napsal jsem toto:
\newcommand{\path}[1]
{
{
\catcode`\|=0
\catcode`\\=13
|def\{|char"5C}
|texttt{#1}
}
}
Vůbec to ale nejde zkompilovat :( Prostě si Latex dělá co chce :). Když odstraním řádek
|def\{|char"5C}
tak se to zkompiluje, ale samozřejmě nefunguje. Kde jenom pořád dělám chyby?
2.5.2007 13:56 oxd
Rozbalit Rozbalit vše Re: latex - dlouhá slova a zalamování
Kvůli změně kategorií se to nedá nijak jednoduše (jestli vůbec) dostat do makra s parametrem, takže je potřeba zvlášť začínací a ukončovací makro. V tomhle případě je ukončovací makro hvězdička.

Co je to "změna kategorií"?
2.5.2007 14:44 Marble | skóre: 27 | blog: marble | Švédsko
Rozbalit Rozbalit vše Re: latex - dlouhá slova a zalamování
Zmenou kategorie myslim nastaveni \catcode znaku. K cele te veci je potreba si uvedomit v jakem poradi zpracovava TeX vstup. Nejprve proc je v tom mem makru vsechno \catcode dvakrat. Jde o to, ze TeX pri uceni se makra (\def\neco{....}) prikazy neprovadi, ale jen uklada. A uklada je jako dvojici ASCII hodnota a catcode. Ja chci mit zmenene catcode az po zavolani makra \path, ale protoze zaroven v tele makra s temi znaky, kterym menim catcode pracuji, tak uz pri uceni se museji ulozit se spravnou catcode (alespon tam, kde ma catcode vyznam). Takze docasne pro uceni zmenim catcode (to je to pred \def, ale ve slozenych zavorkach, takze po skonceni uceni se uz budou zas catcode jak maji byt). Ale pak ty catcode chci menit jeste pri kazdem pouziti makra. Pri pouziti makra se uz samozrejme jeho obsah provadi, takze se provedou prikazy na zmenu kategorie uvnitr makra. Takze v te tve uprave ti chybi proste jen |catcode`|_=13 uvnitr tela makra.

Proc to nejde jednoduse udelat jako makro \path{cesta}. No strucne receo proto, ze TeX nejdriv nacita parametry makra a pak teprv to makro provadi. Kdyz bude ale mezi parametry makra napriklad backslash, tak se TeX pokusi vse za \ nacist jako ridici sekvenci, ktera ale neexistuje a zahlasi chybu (a kdyby existovala, tak to stejne bude jine chovani nez chces -- ty bys potreboval, aby mel backslash jinou kategorii uz pri nacitani parametru makra, ale toho nedocilis prikazem \catcode uvnitr makra. Naopak ten system s makrem bez parametru funguje, protoze se nejdriv provede makro \path, nastavi se catcode a pak se teprv pokracuje ve cteni vstupu. IMO je makro s ukoncovacim znakem na pouziti v pohode. Pokud se ti nelibi hvezdicka, predefinuj si k tomu ucelu slozenou zavorku. :-) (Ale bacha na to, ze ji zaroven asi budes chtit pouzivat jako normalni slozenou zavorku v definici makra.)

Proc je tam \begingroup: Jednoduse proto, ze chci, aby borcus, co mi makro udela (jine \catcode a definice) byl po ukonceni cesty zas hezky uklizen. Takze to cele uzavru do skupiny. Zavorku pouzit nemuzu, protoze bych je pri definici makra nemel spravne sparovane, takze pouziju \begingroup a \endgroup, ktere delaji +/- totez jako slozenen zavorky.

\global je u definice makra proto, ze cela definice zije ve slozenych zavorkach (kvuli catcode), ale ja chci, aby to nadefinovane makro existovalo i po ukonceni bloku.

Uf, bych to pomalu mohl vydat jako clanek na Abicku. :) Ale pokud budes mit chvili casu a zajimaji te vnitrnosti TeXu tak ta knizka od Olsaka, co jsem tu parkrat zminil je skutecne skvely popis.

2.5.2007 15:46 oxd
Rozbalit Rozbalit vše Re: latex - dlouhá slova a zalamování
Díky moc za vysvětlení a za rady.
29.4.2007 23:09 Vtipnéř | skóre: 33 | blog: Vtipnéřův blog | Brno
Rozbalit Rozbalit vše Re: latex - dlouhá slova a zalamování
Možný zdroj problémů je také použití programu latex s češtinou v rámci balíku babel. V tom případě se nenačítají české vzory pro dělení slov. Pro správnou funkci je potřeba použít program cslatex, kdy se použije formát vygenerovaný se správnými vzory. Pracuje se na nové verzi babelu (možná už je hotová), která má už v sobě české vzory, ale mám pocit, že ještě není běžně zakomponována v balíčcích pro jednotlivé distribuce linuxu. Bližší informace by asi bylo možné najít na české TeXovské diskusi.

Jirka
Opening Windows is better than washing them. Clearing Windows (e.g. erasing or deleting) is much more better.
30.4.2007 11:57 robertK | skóre: 26 | blog: Klokanuv_blog | Brno
Rozbalit Rozbalit vše Re: latex - dlouhá slova a zalamování
tohle už není pravda, ta nová verze babelu už je hotová a prý lepší než cslatex. viz www.cstug.cz

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.