ТеX

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

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

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

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

Лого ТеX-а

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

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

Од верзије 3, TeX се користио карактеристичним version numbering system, где су допуне означене додавањем екстра цифре на крају децимале, тако да број верзија асимптотски тежи π. То је одраз чињенице да је TeX сада веома стабилан, а само су мале исправке предвиђене. Тренутна верзија TeX-а је 3.14159265; последњи пут је ажуриран 2014-01-12.[8] Дизајн је замрзнут након верзије 3.0, нове карактеристике или фундаменталне промене неће бити додаване, тако да ће све нове верзије садржати само bug fixes. Иако је сам Доналд Кнут предложио неколико области у којима би се TeX могао побољшати, он је навео да чврсто верује да има непромењен систем који ће произвести исти излаз сада и у будућности, што је важније од увођења нове функције. Из тог разлога он је изјавио да је "absolutely final change (to be made after my death)" да се промени број верзије на π, и у том тренутку све преостале грешке ће постати карактеристике.[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 "packages". Ово се назива 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 уобичајена екстензија за обичне ТеX датотеке. По default, све што следи је знак за проценат на линији за коментар, и то је текст који TeX игнорише. Покрећући на овом фајлу (на пример, куцајући tex myfile.tex у command-line interpreter, или позивајући га из графичког корисничког интерфејса) створиће се излазни фајл под називом myfile.dvi, који представља садржај странице у device independent формату (DVI). DVI фајл може сада бити гладан на екрану монитора или конвертован у одговарајући формат за било који од различитих штампача чији device driver постоји (подршка за штампач углавном није карактеристика оперативних система у време када је створена ТеX). Кнут је рекао да не постоји ништа инхерентно у 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-а и 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] Док ТеX даје нека основна правила и алате потребне да одредите одговарајуће размак, тачни параметри зависе од фонта који се користи за писање формуле. На пример, размак за Кнутов фонт Computer Modern је прецизно и фино подешен током година, а сада је и постављен; али када се други фонтови, као што су AMS Euler, користе по први пут, нови параметри размака морају бити јасно дефинисани.[18]

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

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

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

Формално, алгоритам дефинише вредност под називом лоше која је повезана са сваким могућим преломом линије; лоше се повећава уколико се места на линији морају да протежу или превише смањују да би линија задржала тачну ширину. Казне се додају ако је преломна тачка посебно непожељна: на пример, ако се мора цртицом поделити реч, ако су две линије за редом преломљене на слогове на крају реда, или ако је врло лабава линија после које одмах следи веома кратка линија.

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

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 86-7310-277-4.
  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 January 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 

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

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