Vlákno názorů k článku
Editory pro TeX: který je nejlepší?
Asi nejlepší editor pro (La)TeX
Asi nejvíce se mu co do koncepce blíží v článku nevzpomenutý joe, až na to, že, stejně jako vim nebo Emacs, postrádá prakticky použitelná makra (aby se odposlouchávala, a ne programovala v nějakém obskurním jazyce, pamatujícím kuličková počítadla; aby je bylo možno uložit na disk a znovu načíst - pod libovolným názvem; aby maker bylo v jedné sadě víc, než těch cca 10, kolik umožňuje joe). CSED uměl cca 40 - 60 maker v jedné sadě a počet sad maker byl omezen v podstatě pouze kapacitou DOSovského disku. Joe ovšem, oproti CSEDu, umí syntaxhighlighting (a má to řešeno tak, že je to uživatelsky upravitelné a doplnitelné i pro typy souborů, které po instalaci neumí).
Lyx jsem kdysi (Mandrake 8 nebo 9) zkoušel, neumělo to českou diakritiku (ačkoli normální editory ji na téže platformě zvládaly bez problémů), rozchodit se mi to nepodařilo, ani v dokumentaci o tom nebylo nic rozumného, tak jsem to už v přechodu na vyšší verze neinstaloval.
Kword má možnost uložení "jako dokument sázecího systému TeX", ale jednak je výsledek dost příšerný (asi jako html generovaný wordem), jednak mi to vždy při pokusu o přeložení do dvi zhavarovalo na nějakých obskurních a nedohledatelných chybách.
Re: Asi nejlepší editor pro (La)TeX
stejně jako vim nebo Emacs, postrádá prakticky použitelná makra (aby se odposlouchávalaNemůžu mluvit za Vim, ale proč emacsová odposlouchávací makra nejsou použitelná?
a ne programovala v nějakém obskurním jazyce, pamatujícím kuličková počítadlaA nafackovat nechcete? A Pythagorovu větu taky nahradit něčím novějším? Ta taky musí "pamatovat kuličková počítadla", takže je zralá na nahrazení něčím "modernějším", že? Kdybyste řekl "nechci makra povinně programovat", tak to pochopím, a úplně by to stačilo. Ale s tímhle nedoufejte, že vám budou lidi lízat boty. (Já bych klidně mohl říct, že zase nechci sázet v programu, co pamatuje děrné štítky. Osobně mi TeX jako jazyk přijde mnohem obskurnější, asi jako XSLT, to mi přijde asi tak stejně "použitelné". Ale necítím potřebu to někomu vymlouvat.)
Re: Asi nejlepší editor pro (La)TeX
TeXovský jazyk (praktické zkušenosti s programováním mám jen z jeho varianty pro Metapost) je +- standardní procedurální jazyk se syntaxí sice velmi svébytnou (kus Pascalu, kus Perlu a mnoho dalších, asi jako takový správný vesnický pes "podvraťák"), ale kupodivu je to docela logické a dá se v tom intuitivně orientovat.
Další věcí je, že v (La)TeXu jako takovém (= zpracování textu) většinou programovat nemusíte a jednoduchými makry v podstatě jen nahrazujete to, co by se dalo otrocky zvládnout copy - paste stylem.
Re: Asi nejlepší editor pro (La)TeX
Rejpale, doufám, že chápete rozdíl mezi objektivně platící (a platila by, i kdyby nebyli na Zemi žádní lidé) Pythagorovou větou a programovacím jazykem z doby, kdy počítače byly pomalé a primitivní, takže horu práce za něj musel udělat programátor při praní programu. LISPoidní programy jsou dnes dobré do inteligentních toustovačů s programovatelným mikroprocesorem, jinak je to historie. Nemám rozhodně nikomu za zlé, že tím ještě programuje na strojích, kde existují řádově modernější a výkonnější programovací jazyky, ale osobuji si právo mít za zlé to, že mi použití těchto jazyků někdo vnucuje. Kdyby byla komunita kolem Emacsu co k čemu, tak už tam vedle LISPu dávno dali python, perl, nebo nějaký jiný moderní jazyk (i GIMP už koketuje s pythonem pro skriptování).
Děkuji. Tímto jste mi dokázal, že vůbec nevíte, která bije. V situaci, kdy programátoři znovu tzv. "objevují" vlastnosti Lispu (totiž překvapeně zjišťují, co existovalo již před třiceti lety), prohlásit Lisp za nemoderní jazyk, jasně svědčí o tom, jak moc je třeba brát Vás vážně, a sice minimálně, pokud vůbec. Moderní jazyky dneška jsou například Haskell a Lisp. Haskell je zcela aktuální. Common Lisp odpovídá stavu výzkumu z přelomu 80. a 90. let (viz třeba CLOS), díky rozšiřitelnosti měl ovšem Lisp vždy navrch co do schopnosti implementovat nové koncepty, třeba AOP lze v Lispu implementovat bez potřeby přepisovat kompilátor, což není třeba případ AspectJ. :-) Bohužel pro Haskell momentálně neexistuje komerčně podporovaná implementace, kterou by firmy braly na vědomí, a interaktivita GHC trošku kulhá. Enterprise-grade implementace Lispu jsou dvě a jsou velmi kvalitní.
Bohužel díky nešťastným okolnostem je aktulizace ANSI normy téměř mimo diskusi a tak nový výzkum táhne Scheme - viz třeba práci Olega Kiselyova. Ovšem jeho díla v tzv. "moderním" Pythonu a Perlu naimplementujete značně pracně, protože ty jazyky prostě nevyhovují. Java, Python, C#, Perl a spol. jsou zamrzlé na začátu osmdesátých let, nenabízejí víc, než trošku okořeněný SmallTalk-80, v případě Perlu trošku zhybridizovaný s jakýmsi bizarním speciálním jazykem na zpracování textů. Nelze říci, že by Perl nebyl praktický (ostatně to říká první písmeno jeho názvu) nebo nedejbože že by nebyl použitelný, ale to nemá nic do činění s moderností, ať už "modernost" znamená cokoliv. Však taky Perl nikomu neberu, má své kouzlo i pro mě.
Pokud jde o to, že Emacs je psán v Lispu, pak lze k tomu říci pouze to, že to je jedině dobře. Můžete mít představy, jaké chcete, ale Lisp je velmi produktivní jazyk, čehož si všimli i programátoři, takže po určitém období útlumu kolem poloviny devadesátých let zájem o něj v současnosti neustále vzrůstá, a píší se v něm nové velké systémy, které by v jiných jazycích bylo mnohem pracnější napsat (vyhledávače leteckých spojů, velké transakční systémy - Polaris pro Air Canada, statisíce řádků kompaktního Lispu leckdy nahradí miliony řádků C++). Netuším, jestli "výkonem" míníte výkon kompilovaného kódu nebo výkon programátora, ale kompilátory Common Lispu generují kód téměř na úrovni jazyka C, zatímco produktivita programátora v něm je srovnatelená s Pythonem. Nevím, co víc byste chtěl. Jste asi pořádně rozmazlený.
Mimochodem, Pythagorovou větou Lispu je lambda kalkul, nevím, co objektivnějšího může člověk chtít. Jsem zvědav, co mi jako Pythagorovu větu nabídnete v případě Perlu. :o) Snad ne Kleenovu hvězdu? ;-)
TeXovský jazyk (praktické zkušenosti s programováním mám jen z jeho varianty pro Metapost) je +- standardní procedurální jazyk se syntaxí sice velmi svébytnou (kus Pascalu, kus Perlu a mnoho dalších, asi jako takový správný vesnický pes "podvraťák"), ale kupodivu je to docela logické a dá se v tom intuitivně orientovat. Další věcí je, že v (La)TeXu jako takovém (= zpracování textu) většinou programovat nemusíte a jednoduchými makry v podstatě jen nahrazujete to, co by se dalo otrocky zvládnout copy - paste stylem.Sice nejsem TeXař, ale jeví se mi značně podezřelé dávat dohromady Metapost a makrojazyk TeXu. Já měl za to, že TeX je turingovsky úplný kvůli konstrukci if-then-else a faktu, že jeho makroexpanze má charakter tail callu. Nějakého Pascalu jsem si \mezi{těmi}[legračními]\konstrukcemi\nevšiml, a makrojazyk TeXu snad není Metapost.
Re: Asi nejlepší editor pro (La)TeX
"Výkonem" jsem myslel paměť a rychlost procesoru, kdy není nutno složitými hacky bojovat o každý bit paměti a každý cyklus. Tyhle jazyky mají prostě význam na nevýkonných počítačích s malou pamětí ("inteligentní toustovač"), kam se nic rozumného implementovat nedá a úkol je současně moc složitý na assembler nebo strojový kód.
Pan Knuth napsal jazyk web pro TeX a Metafont, Metapost je syntakticky téměř shodný s Metafontem, obsahuje pouze rozšíření pro barvy a vkládání písmen (fontů) do obrázků a má menší omezení velikosti výsledného obrázku, Metafont má zase navíc ve spouštěcích příkazech generování bitmapy o konkrétním rozlišení a velikosti, zatímco Metapost má jako výsledek postskriptový formát (vektor).
LaTeX je svým \begin{prostředí}\end{prostředí} asi inspirovaný Pascalem.
Re: Asi nejlepší editor pro (La)TeX
Web je neco jineho nez makrojazyk TeXu a Mefafontu/MetaPostu, na to pozor. TeX Je v tomto jazyku napsany, proto se take jeho zdrojaky vetsinou prevadi pomoci web2c do cecka a teprve vysledek se kompiluje. S makrojazykem TeXu to nema prakticky nic spolecneho.
Re: Asi nejlepší editor pro (La)TeX
Re: Asi nejlepší editor pro (La)TeX
Re: Asi nejlepší editor pro (La)TeX
A co to ma spolecneho s Lispem/Scheme, o kterem se bavil Rejpal?To vám bude muset zodpovědět Rejpal, mé znalosti obou jazyků jsou velmi povrchní. To "a" jsem úplně přehlédl, četl jsem "Reverzní polská notace". Když člověk má něco zažitého, tak to tam taky vidí... Možná šlo jen o překlep původního autora, ne o vyslovené zmatení pojmů.
Re: Asi nejlepší editor pro (La)TeX
(apply + data) nebo (apply * data) pro součet nebo součin seznamu čísel (v případě Common Lispu (apply #'+ data) nebo (apply #'+ data)). Součet nula čísel je přitom definován jako nula a součin nula čísel jako jedna, takže lze výsledky pohodlně kombinovat a nejsou zapotřebí funkce jako sum.
Re: Asi nejlepší editor pro (La)TeX
Re: Asi nejlepší editor pro (La)TeX
Re: Asi nejlepší editor pro (La)TeX
Reverzní polská anotace: Nedokážu si představit, jak v tom udělat nějaký vzoreček, složitější než naprosté triviality, které bývají v nadšených článcích (třeba výpočet Gaussovy křivky). Přinejmenším by to znamenalo se léta učit úplně odlišnou matematiku. Většinou je v tom dost složité zpracovávat texty nebo binární data. Je to prostě hračka pro exkluzívní skupinu, která má na hračky čas.
Určitě máte na mysli reverzní polskou notaci. :-) Ta ale nemá nic společného s Lispem, a vůbec nechápu, proč by se kvůli tomu měl člověk učit jinou matematiku. Asi si pletete algebru s matematikou, ale to dělá víc lidí, takže se to dá chápat. Nicméně významné procento inženýrů používá RPN kalkulátory (aspoň v místech, ve kterých se daly historicky normálně sehnat, jako je třeba USA) a nemají s tím sebemenší problémy. Když jsem měl RPN kalkulátor, přišel mi zcela bezproblémový na používání, ba dokonce ještě přirozenější (počítá to tak, jak bych počítal já). Ale možná máte pravdu v tom, že pro inženýra je takový kalkulátor i hezká hračka, stejně jako třeba počítač nebo multimetr.
Věta "Většinou je v tom dost složité zpracovávat texty nebo binární data" je trošku mimo mísu, nemyslíte? Násobení a dělení při zpracování textů přeci nepoužíváte a funkce jako read(jaky_soubor, kolik_bajtu) nebo subst(retezec, regularni_vyraz, nahrada) a podobně určitě nejsou infixové. Nanejvýš v jazycích s message passingem můžete dostat název za objekt, kterému zasíláte zprávu (s tím, že další argumenty jsou, na rozdíl od Lispu a Dylanu, diskriminovány a pak se vymýšlejí "návrhové vzory" typu návštěvník, protože jazyk nemá dostatečné vyjadřovací schopnosti).
"Výkonem" jsem myslel paměť a rychlost procesoru, kdy není nutno složitými hacky bojovat o každý bit paměti a každý cyklus. Tyhle jazyky mají prostě význam na nevýkonných počítačích s malou pamětí ("inteligentní toustovač"), kam se nic rozumného implementovat nedá a úkol je současně moc složitý na assembler nebo strojový kód.
Tak v téhle kategorii AFAIK vede právě Common Lisp. :-) Rozhodně je na tom líp, než třeba Python nebo Java. Osobně se přiznám, že k němu mám ambivalentní postoj, protože ve své dově bohužel vznikl jen jako prostředek ke sjednocení divergujících dialektů jazyka. A sám bych byl rád za něco lepšího, ale ono moc na výběr není. CL ale má sílu v tom, že tu prostě je, jako jazyk s dvěma silnými komerčními implementacemi (byť proprietárními, ale jedna z nich má takový user support, že by si o něm leckterá firma mohla nechat zdát :-)) a několika svobodnými, z nichž aspoň dvě rozhodně nelze označit za pomalé. Na rozdíl od C++ (asi hlavní konkurent) nabízí ovšem žádoucí interaktivitu à la Python. Vy se můžete domnívat, že na velkých strojích nemají význam, ale jsou firmy, co na Lisp na serverech vsadily krk. ;-)
Nicméně tohle je mimo zase z mojí strany. Původní vaše rýpnutí, které mě, jak vidno, dost popudilo, se totiž týkalo toho, že v Emacsu se údajně "makra programují v nějakém obskurním jazyce, pamatujícím kuličková počítadla". To rozhodně není pravda, Elisp byl navržen v první polovině 80. let pouze kvůli napsání textového editoru a k jeho následnému rozšiřování. Tedy má funkce a prostředky přímo k psaní textových editorů. :-) Klidně by v něm mohl být napsaný třeba Vi, nejspíš o dost snáze, než v Cčku. Je to jiný jazyk než LISP 1.5 z roku 1962 "pamatující kuličková počítadla", a jiný jazyk než Common Lisp (tentokrát už jen s prvním písmenem velkým, bacha na to), jehož implementace čistě za tímhle účelem by nebyla tak jednoduchá a navíc v té době teprve vznikal. Pokud se Vám zdá divný zápis funkcí (f x y) (což je asi jediná věc, kterou má Elisp společného s "jazykem pamatujícím kuličková počítadla", společně s minimálním funkcionálním jádrem) tak s tím musíte jít za matematiky, ti to totiž píší přesně takhle (nanejvýš vynechávají závorky, pokud není třeba zapisovat prioritu, stačí se podívat třeba na http://en.wikipedia.org/wiki/Lambda_calculus). Koneckonců to jeden z nich vymyslel.
Pan Knuth napsal jazyk web pro TeX a Metafont, Metapost je syntakticky téměř shodný s Metafontem, obsahuje pouze rozšíření pro barvy a vkládání písmen (fontů) do obrázků a má menší omezení velikosti výsledného obrázku, Metafont má zase navíc ve spouštěcích příkazech generování bitmapy o konkrétním rozlišení a velikosti, zatímco Metapost má jako výsledek postskriptový formát (vektor).
Já jsem měl na mysli samotný TeX. Nikomu neberu Metapost, ale většina lidí, co používají TeX, píše v makrojazyku TeXu - no, dobře, většina z nich asi používá hotová makra v LaTeXu. ;-) Ale ti, co používají plain, v něčem píší svá makra, a ten jazyk není ani web, ani metapost. Osobně mi to přišlo jako vylepšený Troff, má to zhruba podobný model. Problém je, že když se v tom člověk pokusí dělat složité věci, začne to být zajímavé. V TeXu člověk nemá jinou možnost, na rozdíl třeba od Troffu, kde se dají makra expandovat filtrem psaným v jakémkoli jazyku. Je to Unix, používá to pajpu. ;-)
Osobně svůj "ideální nástroj" co do výstupu a sazby stále hledám. V jednu chvíli jsem uvažoval o TeXu, ale víc než vstupní jazyk mě odradily jiné zlotřilosti. Syntaxe TeXu jako vstupního jazyka pro text je téměř dokonalá, jako prostředek k zápisu maker se mi líbí již mnohem méně. Taky by bylo bezva, kdyby se člověk nemusel potýkat s věcmi, jako je kódování, písma a podobně. Třeba jedna firma, ve které jsem pracoval, přešla z TeXu na XSL:FO kvůli problémům TeXu s exotickými jazyky. Já sice uznávám CM jako nádherné písmo na spoustu (především technických) aplikací, ale bylo by pěkné, kdyby se třeba OpenType písma dala v TeXu používat tak snadno, jako v dnes již stařičkém Troffu (viz ukázka: http://heirloom.sourceforge.net/doctools/troffdemo.pdf). Možná to ještě zkusím, přiznávám, že se mi moc líbí ConTeXt, ale zatím váhám.
Re: Asi nejlepší editor pro (La)TeX
Re: Asi nejlepší editor pro (La)TeX
Mám offtopic dotaz, když už se tu tak srovnávají růžné jazyky: máš/te nějaký zkušenosti s jazykem OCaml? Chci se naučit něco nového, "něco, co mě zaručeně potěší" :-)
Re: Asi nejlepší editor pro (La)TeX
Re: Asi nejlepší editor pro (La)TeX
Jinak Auc TeX je super věc. Doporučuji alespoň vyzkoušet.
Re: Asi nejlepší editor pro (La)TeX
Re: Asi nejlepší editor pro (La)TeX
Re: Asi nejlepší editor pro (La)TeX
Re: Asi nejlepší editor pro (La)TeX
Macro-commands
C-x ( start macro definition
C-x ) end of macro definition
C-x e execute last definied macro
M-n C-x e execute last defined macro n times
M-x name-last-kbd-macro give name to macro (for saving)
M-x insert-keyboard-macro save named macro into file
M-x load-file load macro
M-x macroname execute macroname
Jinak libovolné makro lze spustit M-x název. Klávesové zkratky se zapisují do .emacs a to voláním příkazu global-set-key, který páruje posloupnost kláves a funkci (pojmenované makro).
Re: Asi nejlepší editor pro (La)TeX
Re: Asi nejlepší editor pro (La)TeX
Power-Macros
Power Macros is an Emacs package, which I developed out of frustration at not being able to define a macro, bind it to a key, and have it bound for future Emacs sessions (or rather, not being able to do so easily).
Dost dobre chapu jeho pocity pri cteni emacs konfiguraku nebo maker. Je to absolutne jiny svet. Myslim si, ale ze syntaxe neni dulezita - hral jsem si s geditem, kde jsou makra v Pythonu a rekl bych, ze se makra pisi hure v geditu (coz veri, ze se casem zmeni).
Myslim si, ze se vyznam IDE a editoru mirne precenuje. Docela si vystacim s AucTeXem pro TeX, SQL modem a mc pro ostatni. Hlavne to chce si vybrat, a do sveho editoru investovat cas a naucit se jej - 100x se to vrati.

