TeX

Из Википедије, слободне енциклопедије
TeX
TeX logo.svg
Статус развоја Одржава се
ОС cross-platform
Тип typesetting
Лиценца слободан софтвер
Веб-сајт www.tug.org

ТеХ (изговара се тек или тех)[1] систем је за обраду и прелом текста на рачунару. У основи овог система лежи МЕТАФОНТ, језик за опис фонтова и словни облик Computer Modern. Његов творац је Доналд Кнут, а прва стабилна верзија је реализована 1978. године. Његова основна сврха је писање докумената, чланака и књига које лепо изгледају, структурирано и једноставно генеришу текст који у себи садржи и друге штампане садржаје сем обичног текста, а ту се првенствено мисли на научне текстове са сложеним математичким формулама и функцијама као и другим симболима. TeX је слободан софтвер, и као такав је доступан широком кругу корисника.

TeX је популаран у академској сфери, нарочито када су у питању математика, компјутерске науке, економија, инжењерство, физика, статистика, и квантитативна психологија. У великој мери је распрострањен у Unix troff, другом омиљеном систему за форматирање текста, у многим Unix инсталацијама, и користи се за различите намене. TeX је општеприхваћен као најбољи начин за слагање сложених математичких формула, нарочито када се користи у облику LаTeX, ConTeXt или неког другог пакета шаблона, а данас се такође користи и за друге словослагачке послове. Широко коришћен MIME type за TeX је application/x-tex. У оквиру припрема система, његово име је стилизовано као TeX.

Историја[уреди]

Када је 1968. године објављен први том The Art of Computer Programming аутора Доналда Кнута слагање слога је извршено hot metal typesetting, а подешено на Monotype Corporation. Ова метода, која датира из 19. века, произвела је "добар класични стил" цењен од стране Кнут-а. Када је, 1976. године, објављено друго издање другог тома цела књига морала је поново да прође слагање слога пошто је Monotype технологија увелико замењена phototypesetting, и оригинални фонтови више нису доступни.[2] Када је Кнут видео галерију доказа његове нове књиге 30. марта 1977. године, нашао је да страшно лоше изгледају.[3] У то време, Кнут је видео по први пут излаз дигиталне припреме система високог квалитета, и заинтересовао се за дигиталну типографију. Разочаравајућа галерија доказа дала му је финалну мотивацију да реши проблем једном за свагда и да за све дизајнира сопствени систем за слагање слога. Дана 13.03.1977. године, написао је допис самом себи у којем описује основне карактеристике TeX-а.[4]

Он је планирао да га заврши током одмора 1978. године, али се десило да развој није замрзнут и спреман за употребу све до 1989. године, више од десет година касније. Десило се да је Guy Стил посетио Станфорд Универзитет током лета 1978. године, када је Кнут развијао своју прву верзију TeX-а. Када се те јесени Стил вратио на Масачусетски технолошки институт, преписао је TeX улаз/излаз (I/O) да ради под Incompatible Timesharing System (ITS) оперативим системом. Прва верзија TeX је написана у SAIL programming language и предвиђена да ради на PDP-10 под Stanford WAITS оперативним системом. За касније верзије TeX-а, Кнут је измислио концепт literate programming, начин да се произведе компактибилни изворни код и умрежену документацију написану у TeX-у из истог почетног фајла. Коришћен је језик који се зове WEB и производи програме у DEC PDP-10 Pascal.

Нова верзија TeX, преписана од нуле и названа TeX82, објављена је 1982. године. Међу другим променама, оригинални алгоритам за прелом речи на крају реда је замењен новим алгоритмом који је написао Франк Лианг. Такође, TeX82 користи fixed-point arithmetic уместо floating-point, како би се осигурала репродуктивност резултата у различитим рачунарима,[5] и укључује праву Turing-complete програмског језика, након интензивног лобирања од стране Guy Steele.[6] Године 1989. Доналд Кнут је објавио нову верзију TeX-а и МЕТАФОНТ.[7] Упркос жељи да задржи програм стабилним, Кнут је схватио да 128 различитих карактера за унос текста није довољно да прими друге језике сем енглеског; стога је главна промена у верзији 3.0 способност TeX-a за рад са 8-битним улазом, дозвољавајући 256 различитих знакова уноса текста.

Од верзије 3, TeX се користио карактеристичним нумеричким системом за означавање верзије, где су допуне означене додавањем екстра цифре на крају децимале, тако да број верзија асимптотски тежи π. То је одраз чињенице да је TeX сада веома стабилан, а само су мале исправке предвиђене. Тренутна верзија TeX-а је 3.14159265; последњи пут је ажуриран 2014-01-12.[8] Дизајн је замрзнут након верзије 3.0, нове карактеристике или фундаменталне промене неће бити додаване, тако да ће све нове верзије садржати само bug fixes. Иако је сам Доналд Кнут предложио неколико области у којима би се TeX могао побољшати, он је навео да чврсто верује да има непромењен систем који ће произвести исти излаз сада и у будућности, што је важније од увођења нове функције. Из тог разлога он је изјавио да је "апсолутно коначна промена (да се учини након моје смрти)" да се промени број верзије на π, и у том тренутку све преостале грешке ће постати карактеристике.[9] Такође, METAFONT након верзије 2.0 асимптотски тежи e, и сличне промене ће бити примењене након Кнутове смрти.

Пошто је изворни код TeX-a у суштини у јавном домену (види доле), другим програмерима је дозвољено (и изричито се подстичу) за побољшање система, али је потребно да користите други назив за дистрибуцију модификованог TeX-а, што значи да у изворни код могу даље развијати. На пример, омега пројекат је развијен после 1991. године, првенствено за побољшање Тек за вишејезичне припремне способности. Кнут је развио "незваничну" модификовану верзију, као што је TeX-XeT, који омогућава кориснику мешовите текстове написане лева на десно и са десна на лево у писаној форми, а у истом документу.[10]

Систем за слагање слога[уреди]

TeX команде обично почињу са backslash и груписане су у витичастим заградама. Скоро све синтаксне особине TeX-а се могу мењати у ходу, што TeX улаз чини тешким за анализу осим самог TeX-а. TeX је macro- и token-based language: много команди, укључујући и оне које дефинише корисник, је проширено у ходу, а само су извршни непрошириви токени остали. Због тога је само проширење практично без споредних ефеката. Tail recursion макрои не заузимају простор меморије, а if-then-else конструкције су на располагању. Ово чини да је TeX Turing-complete језик чак и на нивоу проширења.[11] Систем се може поделити у четири нивоа: у првом, карактери се читају из улазног фајла и додељен им је код категорије (понекад се назива "catcode", скраћено). Комбинација backslash (заправо, било који знак од нулте категорије) затим слова (карактери категорије 11) или неког другог карактера замењује контролни знак секвенце. У том смислу, ова фаза је као лексичке анализе, иако не формира бројеве из цифара. У наредној фази, са могућношћу проширења контролне секвенце (као што су уређаја или дефинисаним макроима) су замењени њиховим текстом. Улаз за трећу фазу је тада ток знакова (укључујући и оне са посебним значењем) и unexpandable контролне секвенце (обично задатке и визуелне команде). Сада се карактери монтирају у параграфу. TeX-ов алгоритам за прелом параграфа ради тако што оптимизује тачку прелома за цео параграф. Четврта фаза прекида вертикалну листу линија и другог материјала у оквиру једне стране.

TeX има прецизно знање о величинама свих знакова и симбола, као и начина на који користи ове информације, и начина на који израчунава оптимали распоред слова по реду и редова по страни. На крају производи DVI фајл ("DeVice Independent") који садржи коначне положаје свих знакова. Овакав *.dvi фајл може бити штампан директно на одговарајући штампач, или може бити конвертован у други формат. Данас се често користи pdfTeX, којим се потпуно заобилази DVI. Основни систем разуме око 300 команди, које се зову primitives.[12] Ове команде су ниског нивоа и ретко се користе од стране корисника, а већина њих обезбеђује функционалност формата датотека (predumped memory images of TeX after large macro collections have been loaded). Кнутов оригинални подразумевани формат, са додатних 600 команди је Plain TeX.[13] Најраспрострањенији формат је LaTeX, првобитно развијен од стране Леслие Лампорт, који обухвата стилове докумената за књиге, писма, сјалдове, итд, и додаје подршку за референцирање и аутоматско нумерисање поглавља и једначина. Још један формат који је у широкој употреби је AMS-TeX, који је произведен од стране Америчког математичког друштва и пружа много више user-friendly команди, којима се може изменити часопис на начин да се уклопи са стилом њихове издавачке куће. Већина карактеристика AMS-TeX може се користити у LaTeX помоћу AMS "пакета". Ово се назива AMS-LaTeX. Други формати укључујући ConTeXt, пре свега се користе за стоно издаваштво и већином су написани од стране Hans Hagen на Pragma.

Како TeX ради[уреди]

Узорак страница направљена коришћењем TeX-а са LaTeX макроима

Једноставан Здраво свете програм у Plain TeX изгледа:

Здраво, Свете
\bye % marks the end of the file; not shown in the final output

Ово може бити у датотеци myfile.tex јер је .tex уобичајена екстензија за обичне TeX датотеке. По default, све што следи је знак за проценат на линији за коментар, и то је текст који TeX игнорише. Покрећући на овом фајлу (на пример, куцајући tex myfile.tex у command-line interpreter, или позивајући га из графичког корисничког интерфејса) створиће се излазни фајл под називом myfile.dvi, који представља садржај странице у device independent формату (DVI). DVI фајл може сада бити гладан на екрану монитора или конвертован у одговарајући формат за било који од различитих штампача чији device driver постоји (подршка за штампач углавном није карактеристика оперативних система у време када је створена TeX). Кнут је рекао да не постоји ништа инхерентно у TeX-у што захтева DVI као излазни формат, а касније Tex верзије, пре свега pdfTeX, XeTeX и LuaTeX, дају подршку директно у PDF.

Пример математичке формуле[уреди]

Посебно за математичке формуле TeX нуди другачију текстуалну синтаксу. На пример, квадратна једначина (чије је решење квадратна формула) појављује се као:

Викиозначавање Резултат у чланку
The quadratic formula is $-b \pm \sqrt{b^2 - 4ac} \over 2a$ \bye 

Формула је штампана на начин као да је особа писала руком, или сложила једначину у текст. У документу, улазни део математички модел се врши почевши са $ симболом, затим се уноси формула у TeX синтакси, и затвара са другим истим симболом са којим је отворена. Кнут је у шали објаснио да је изабрао знак долар да укаже на почетак и крај математичког мода у plain TeX-у јер је слагање слога и математичких формула традиционално требало да буде скупо.[14] Display mathematics (математичка формула представљена у центру новог реда) је слична предходном примеру али користи $$ уместо једног $ симбола. На пример, горња квадратна формула представљена на математички начин је:

Викиозначавање Резултат у чланку
The quadratic formula is $$-b \pm \sqrt{b^2 - 4ac} \over 2a$$ \bye 

Нови аспекти[уреди]

Софтвер TeX-а обухвата неколико аспеката који нису били доступни, или су нижег квалитета у, другим програмима за припрему текста у време када је TeX објављен. Неке од новина су базиране на основу занимљивих алгоритама, а довеле су до неколико теза које су објавили Кнутови студенти. Док су нека од ових открића сада укључена у друге програме за слагања слога, други, као што су правила за математички размак, су још увек јединствени.

Математички размак[уреди]

Математички текст сложен коришћењем TeX-а и AMS Euler фонта

Пошто је основни циљ TeX језика квалитетна припрема за издаваче књига, Кнут је посветио велику пажњу размацима и правилима за математичке формуле.[15][16] Он је радио на три рада који се сматрају стандардима изврсности математичке типографије: сложио је слог за књиге издавачке куће Addison-Wesley Publishing's (која је штампала књигу The Art of Computer Programming), а нарочито рад од Hans Wolf и Joseph Louis Lagrange (термодинамичке иновације, +1856); издања математичког журнала Acta Mathematica који датира из периода око 1900. године; и копију Indagationes Mathematicae, Холандског математичког часописа. Кнут је пажљиво погледао ове штампане радове да би сортирао и пронашао најбољи скуп правила за размак.[17] Док TeX даје нека основна правила и алате потребне да одредите одговарајуће размак, тачни параметри зависе од фонта који се користи за писање формуле. На пример, размак за Кнутов фонт Computer Modern је прецизно и фино подешен током година, а сада је и постављен; али када се други фонтови, као што су AMS Euler, користе по први пут, нови параметри размака морају бити јасно дефинисани.[18]

Припрема слога за математичке формуле у TeX-у није без критике, нарочито у вези са техничким детаљима показатеља фонта, који су дизајнирани у ери када је значајна пажња посвећена захтевима за складиштење. То је довело до неких "hacks" преоптерећења у неким областима, што је заузврат довело до захтева за другим "hacks". На нивоу естетике, такође је критиковано освежавање текста.[19] Спецификација OpenType math фонта се у великој мери ослања на TeX, али има и неке нове карактеристике / побољшања.[20][21][22]

Подела речи на слогове на крају реда и поравнање[уреди]

У поређењу са ручним припремама, проблем поравнања је лако решити у дигиталном систему као што је TeX, који, под условом да су обезбеђени добри примери за прелом реда, може аутоматски ширити размак између речи да попуни простор до краја реда. Проблем је, дакле, да се пронађе скуп контролних тачака које ће дати највише визуелно пријатан резултат. Многи алгоритми за поделу речи на крају реда користе first-fit approach, где су утврђене тачке прекида за сваку линију једна за другом, а не дозвољавају да се тачка прекида мења пошто је се изабрана.[23] Такав систем није у стању да дефинише тачку прекида у зависности од ефекта који ће имати на следећим линијама. Поређења ради, укупан-фит алгоритама за разбијање линија који користи TeX, а који је развијен од стране Доналда Кнута и Michael Plass разматра све могуће тачке прекида у пасусу, и потом налази оптималну комбинацију линије прекида који ће произвести највише глобално пријатан аранжман.

Формално, алгоритам дефинише вредност под називом лоше која је повезана са сваким могућим преломом линије; лоше се повећава уколико се места на линији морају да протежу или превише смањују да би линија задржала тачну ширину. Казне се додају ако је преломна тачка посебно непожељна: на пример, ако се мора цртицом поделити реч, ако су две линије за редом преломљене на слогове на крају реда, или ако је врло лабава линија после које одмах следи веома кратка линија. Ако параграф садржи могућих тачака прекида број ситуација које се морају проценити наивно је . Међутим, методом динамичко програмирање, сложеност алгоритма може се свести на (види Велико О нотација). Даља поједностављења (на пример, не тестирају веома вероватну тачку прекида као што је растављање у првој речи на став), доводе до ефикасног алгоритма чији је покренут време је готово увек реда . Сличан алгоритам се користи за одређивање најбољих начина да се прекине параграф преко две стране, како би се избегло удовице или сирочад (линије које се појављују само на страници док је остатак параграфа је на следећој или претходној страни). Међутим, генерално, теза од Michael Plass показује како је проблем прелома стране може бити NP-complete због додатних компликација постављања фигура.[24] TeX је усвојио неколико другиг програма за стварање алгоритма за прелом линије, као што су Adobe InDesign (a desktop publishing application)[25] and the GNU fmt Unix command line utility.[26]

Коришћење TeX-a[уреди]

У неколико техничких области, као што су информатика, математика, инжењерство и физика, TeX је постао де факто стандард. Бројни магазини, журнали и листови у овим областима су произведени употребном TeX-a или LaTeX-a, омогућавајући ауторима да пошаљу своје сирове рукописе написане у TeX-у.[27] Многе публикације у другим областима, укључујући речнике и правне публикације, које су произведене користећи TeX, нису биле тако успешне као у више техничким областима, јер TeX је првенствено намењен математици. Када је дизајнирао TeX, Доналд Кнут није веровао да би један систем за слагање слога одговарао потребама свих; уместо тога, он је дизајнирао многе кукице унутар програма тако да је било могуће писати проширења, и објавио је изворни код, надајући се да ће издавачи прилагодити дизајн њиховим потребама. Док су такви додаци створани (укључујући и неке додатке од стране самог Кнута[28]), већина људи ће повећати TeX само помоћу макроа и то је остао систем повезан са техничким припремама.[29][30]

Могуће је користити TeX за аутоматско генерисање софистицираног распореда када су у питању XML податци. Разлике у синтакси између два описа језика може да се превазиђе уз помоћ TeXML. У контексту XML објављивања, TeX се на тај начин може сматрати као алтернатива за XSL-FO. TeX дозвољава да се научни радови у математичким дисциплинама своду на релативно мале фајлове, које би могле бити изречене на страни клијента, што омогућава потпуно слагање слога у научним радовима који се размењују преко раног Интернета, чак и када слање великих датотека било тешко. Ово је утрло пут за стварање спремишта научних радова, као што су arXiv, кроз које радови могу бити 'објављени' без посредника издавача.[31]

Могуће је убацити TeX формуле у МедијаВики странице користећи <math> ознаку.

Заједница[уреди]

TeX Users Group's logo

Значајна лица у TeX заједници укључујући TeX Users Group, која издаје TUGboat и The PracTeX Journal, покривају широк спектар тема из дигиталне типографије од значаја за TeX. Deutschsprachige Anwendervereinigung TeX је највећа корисничка група у Немачкој. TeX Users Group је основана 1980. године у образовне и научне сврхе, и нуди организацију за оне који имају интерес за типографију и дизајн фонта, а при томе су корисници TeX система за слагање слога који је изумео Доналд Кнут. TeX Users Group заступа интересе TeX корисника широм света. TeX Users Group објављује часопис TUGboat три пута годишње. tex.stackexchange.com је активна локација за питања и одговоре како за нове тако и за искусне TeX кориснике подједнако.

Види још[уреди]

Референце[уреди]

  1. Самарџић, А. LATEX за ауторе (страна 7.), Компјутер библиотека Чачак. 2003. ISBN 978-86-7310-277-1.
  2. Knuth, Donald Ervin, „1. Commemorative lecture for the Kyoto Prize, Kyoto, 1996”, Digital Typography 
  3. Digital Typography. стр. 5. "I had spent 15 years writing those books, but if they were going to look awful I didn't want to write any more."
  4. Knuth, Donald Ervin, TEXDR.AFT 
  5. Knuth & Plass. стр. 144
  6. Donald E. Knuth, Knuth meets NTG members, NTG: MAPS. 16 (1996), 38–49. Reprinted as Questions and Answers, III, chapter 33 of Digital Typography. стр. 648.
  7. Donald E. Knuth. The New Versions of TeX and METAFONT, TUGboat 10 (1989), 325–328; 11 (1990), 12. Reprinted as chapter 29 of Digital Typography.
  8. „TeX 14 release”. Приступљено 20. 01. 2014. 
  9. Donald E. Knuth. The future of TeX and METAFONT, NTG journal MAPS (1990), 489. Reprinted as chapter 30 of Digital Typography. стр. 571.
  10. Donald E. Knuth and Pierre MacKay. Mixing Right-to-Left Texts with Left-to-Right Texts, TUGboat 8 (1987), 14–25. Reprinted as chapter 4 of Digital Typography.
  11. Jeffrey, Alan (1990), „Lists in TeX's Mouth” (PDF), TUGboat, 11 (2): 237—45 
  12. Knuth (1984). стр. 9.
  13. Plain TeX (source code), CTAN 
  14. Knuth (1984). стр. 127.. Ch. 16: Typing Math Formulas
  15. Slater, Robert (1989), Portraits in Silicon, MIT Press, стр. 349, ISBN 9780262691314 
  16. Syropoulos, Apostolos; Tsolomitis, Antonis; Sofroniou, Nick (2003), Digital Typography Using LaTeX, Springer, стр. 93, ISBN 9780387952178 
  17. Donald E. Knuth. Questions and Answers II, TUGboat 17 (1996). стр. 355–367. Reprinted as chapter 32 of Digital Typography. стр. 620–624.
  18. Donald E. Knuth. Typesetting Concrete Mathematics, TUGboat 10 (1989). стр. 31–36. стр. 342. Reprinted as chapter 18 of Digital Typography. стр. 367–378.
  19. Ulrik Vieth (2001) Math typesetting in TEX: The good, the bad, the ugly
  20. High-Quality Editing and Display of Mathematical Text in Office 2007 – Murray Sargent: Math in Office
  21. LineServices – Murray Sargent: Math in Office
  22. http://www.ntg.nl/maps/38/03.pdf
  23. Barnett, Michael P (1965), Computer Typesetting: Experiments and Prospects, Cambridge, MA: MIT Press 
  24. Knuth & Plass (1981)
  25. „Donald E. Knuth” (PDF), TUGboat (interview), Advogato, 21: 103—10, 2000 
  26. „4.1 fmt: Reformat paragraph text”, Core GNU utilities (GNU coreutils) manual, GNU Project, 2016 
  27. Beebe. стр. 10.
  28. Knuth, Donald Ervin; MacKay, Pierre (1987), „Mixing Right-to-Left Texts with Left-to-Right Texts” (PDF), TUGboat, 8: 14—25 . Reprinted as „Chapter 4”, Digital Typography 
  29. Knuth, Donald Ervin (1996), „Questions and Answers I”, TUGboat, 17: 7—22 . Reprinted as „Chapter 31”, Digital Typography, стр. 598 
  30. Knuth, Donald Ervin (1996), „Questions and Answers II”, TUGboat, 17: 355—67 . Reprinted as „Chapter 32”, Digital Typography, стр. 616—17 
  31. O'Connell, Heath (2000). „Physicists Thriving with Paperless Publishing”. arXiv:physics/0007040Слободан приступ. 

Литература[уреди]

Спољашње везе[уреди]