Как показали результаты
голосования, многие не знают, что такое LaTeX (правильно читать
«латех», не «латекс»!), но имеется определенный интерес к этой теме. Поэтому был создан специальный блог и в первом посте хочется сделать обзор этой системы.
Что такое LaTeX
LaTeX — это набор макросов к
TeX — издательской системе, разработанной Дональдом Кнутом. Кнут и его ученики развивали данную систему, в частности были разработаны пакеты описания шрифтов (
MetaFont) и программирования рисунков (
MetaPost).
Верстка в LaTeX происходит следующим образом: в исходный текст добавляются специальные команды, описывающие его оформление. В некотором роде это напоминает верстку в HTML, но синтаксис конечно другой. Также сходство придает то, что бОльшая часть оформления выносится в так называемые
стилевые файлы, которые группируются по выполняемым функциям в
пакеты. Примерами могут служить пакеты русификации, наборы шрифтов, математических символов, химических формул, работы с таблицами, многостраничными таблицами и т.д. Так как статья обзорная — подробно на этом останавливаться не будем.
После того, как текст набран и сохранен в файле (рекомендуемым расширением является .tex), его нужно обработать специальными утилитами. Набор утилит зависит от используемой вами реализации LaTeX, но обычно это:
latex <имя файла> — создает dvi-файл, это фактически скомпилированное представление текста, но без шрифтов. dvi-файл можно перегнать в PostScript-формат для печати на принтерах, поддерживающих PostScript, либо в банальную pdf-ку. В используемой мной системе PDF генерировалось с помощью команды
dvipdfm dvipdfm -p a4. Удобно, что файлы с исходным текстом можно инклудить друг в друга. Это позволяет некоторые файлы (например, список литературы) генерировать с помощью различных утилит.
Здесь самое время поговорить о реализациях LaTeX.
Реализации LaTeX
В мире
Linux (и прочих *nix) систем пользуются популярностью дистрибутивы
teTeX (как его поставить хорошо расписано
здесь, правда данный продукт заморожен с 2006 года, за комментарий спасибо
adrianopol ) и
texlive.
В мире
Windows единственный дистрибутив с которым у меня получилось работать —
MiKTeX.
Обычно дистрибутивы LaTeX не содержат средств для работы с верстаемым текстом, поэтому приходится использовать дополнительные редакторы или интегрированные оболочки. Многие хвалят
Lyx (кроссплатформенная),
TexMaker (кроссплатформенный),
Kile (*nix) и
WinEdit (Windows). Я в работе использовал связку
Far+Colorer+bat-файл под Win и
Emacs под FreeBSD. Также существует плагин для Eclipse —
texlipse.
upd:
Под Windows есть еще
TeXnicCenter (спасибо
zimer ) и
LEd (спасибо
orybak ).
Преимущества LaTeX
Не хочется устраивать священные войны. Напишу, чем лично мне нравится LaTeX.
1. НеWYSIWYG-подход. WYSIWYG-подход ограничивает мою свободу. Я обязан делать не так как мне надо (например не так как указано в стандарте оформления), а так как реализовано в визивиг-редакторе, шаг влево, шаг вправо — побег. Данный фактор скорее идеологический, но кто имеет богатый опыт верстки (например HTML) тот со мной согласится.
2. Набор формул — один из основных факторов. Набрать в ворде какую-нибудь сложную формулу бывает очень не просто, если же формул много — то их набор с помощью мышки может занять длительное время. В LaTeX же все гораздо проще — достаточно только сверятся иногда со справочником. Например, гораздо легче набрать символ "_" и получить нижний предел интегрирования, чем брать в руки мышь, вызывать редактор формул и тыкать в нем.
3. Богатейшие возможности макропрограммирования. Если у меня трехэтажные формулы, и они имеют регулярную структуру, мне гораздо проще написать для них один раз макрос и собирать формулы из заготовок. Причем, хороши макросы не только для работы с формулами а вообще для работы с любыми регулярными структурами. Например, несколько лет назад в пакете оформления курсовых я написал макрос для генерации титульника и навсегда забыл о том, что такое выровнять шапку, тему, выполнил-проверил и т.д.
4. Переносимость результата. Не всегда документ, набранный в 2007-м ворде будет корректно отображаться в 2003-м, а тем более из него печататься. В случае использования LaTeX проблема решается конвертацией в PDF. PDF гарантирует однозначную печать вашего документа в любом центре оперативной печати. Интересным следствием такого решения является борьба с любителями халявы. Да, вы всегда дадите одногруппнику посмотреть свой курсач, но использовать его как шаблон он уже не сможет.
5. Оглавление и список литературы. Автоматическая генерация оглавления есть и в ворде, но многие так и не научились ею пользоваться. И, как показал опыт оформления диплома в ворде вид оглавления слабо кастомизируем. Еще одной интересной фичей является автоматическая генерация ссылок на источники. Т.е. при создании ссылки на источник мы указываем его понятное нам имя (например roga — Самолысов Павел Евгеньевич, «Рога и Копыта»). Далее мы компонуем список литературы, сортируя источники по некоторому признаку и наша символьная ссылка заменяется номером источника. Меняем порядок следования источников — номера пересчитываются. Также если список литературы большой, то мы можем использовать для работы с ним внешние утилиты. Вплоть до генерации .tex-файла со списком литературы из БД.
6. UPD: В LaTeX мы работаем с текстовыми файлами, соответственно легко можно хранить эти файлы в репозитории системы управления версиями (например SVN). Соответственно, расширяются возможности коллективной работы. Да, 2007й офис тоже хранит файлы в XML-формате, но попробуйте сравнить diff непонятных XML-ек и LaTeXовских файлов. За замечание спасибо
in8finity .
7. В последнее время становится актуальным и для России — большинство LaTeX пакетов бесплатны.
Русификация LaTeX
Для русификации LaTeX необходимо поставить пакет, осуществляющий поддержку используемой вами кодировки, в случае Windows-кодировки это будет пакет
cp1251.
Можно использовать пакет
t2 для поддержки кириллических шрифтов, но если вы сгенерируете PDF, то увидите, что шрифты какие-то корявые и рубленые. Это недостаток шрифтов t2. Для его исправления следует поставить другой набор шрифтов, наиболее симпатичными и часто используемыми является пакет
PSCyr — коллекция русских шрифтов в формате
Type1. Пакет
PSCyr не входит в состав MiKTeX, в teTeX вроде бы входит, но установить его все равно нужно руками. Если в ваш дистрибутив LaTeX данный пакет не входит — следует скачать два архива:
этот и
этот. В Windows распаковать архивы можно с помощью WinZip. Далее следует воспользоваться авторской инструкцией, которая поставляется вместе с пакетом. Инструкция правда написана для teTeX, но и в случае MiKTeX замечательно подходит, единственное, в MiKTeX нет файла config.bat, но и без него все работает.
Ну и что бы русский язык заработал в вашем документе необходимо в преамбуле подключить соответствующие пакеты. Преамбула документа будет иметь вид:
\documentclass[12pt]{article}
\usepackage[cp1251]{inputenc}
\usepackage[russian]{babel}
\usepackage{pscyr}
Литература по LaTeX
Напоследок, хотелось бы привести список наиболее интересных и полезных книг по системе LaTeX. Эти книги легко найти в сети.
- Не очень краткое введение в LaTeX 2e, перевод Б. Тоботрас.
- С. М. Львовский — LaTeX: подробное описание — культовая книга, должен прочитать каждый.
- Набор математических формул в LaTeX 2e — все средства LaTeX 2e и AMS-LaTeX для печати математики в документах на англ. и русском языке. Очень много внимания уделяется российским стандартам оформления формул.
- Включение рисунков в LaTeX 2e — графики, диаграммы и просто картинки.
- Гипертекст в PDF-документе — как сделать функциональное оглавление с помощью LaTeX.
- Цвет в LaTeX — раскрашиваем текст и таблицы.
- Русский язык в LaTeX — кодировки шрифтов, стандарты оформления русских текстов, формул. Все о номерах, кавычках и тире.
UPD:
Полезные ссылки
За первые две ссылки спасибо
adrianopol , за третью —
EugeneKudashev .
Естественно, что данная статья обзорная, ее цель — познакомить хабралюдей с LaTeX. На все ваши вопросы постараюсь ответить в комментариях. В дальнейшем ожидается цикл статей по верстке диплома в LaTeX.
комментарии (262)
Вы пишете:
Читать как «латех» или «латэкс»?
А как вы такое слово прочитаете!?
Так что всё-таки лейтек или лейтех, но никак не латекс.
А насчет происхождения — ну почему же неважно? Почему вы к греческому слову пытаетесь применить английские правила чтения? Потому что вам так привычнее?
И «latex» произносится (авторами) как «лейтех». Спросите у Donald Knuth, автора системы TeX, как это произнести, если сомневаетесь :)
После такого обсуждения слово Латекс прилипнет к вам на веки вечные.
И я согласен с теми кто вам говорит что читается и говорится Латекс хоть вы тресните но увы Латекс.
И нефиг пороть чушь про греческие слова.
Если речь шла про технику или технологию.
А в итоге нам продемонстрировали мега-закомплесованность.
Писал курсач на эту тему, нужно было введение сделать на пару страниц больше — изучал Кнута. Он об этом говорит явно.
Благодаря тому, что для составляения документа можно просто генерировать исходный файл, написание и многочисленные переделывания моего диплома превратились в рай; особенно на фоне моих Windows-based одногруппников.
Единственное, что напрягает — обилие атавизмов и ненужных тонкостей. Таблицы тоже потребовали некоторой сноровки, но как нашел table-mode, так стало совсем хорошо.
Про таблицы также полностью согласен. Правда я не нашел table-mode, поэтому пришлось помучаться.
Что касается проблем, то напрягает полное отсутствие нэймспейсов, т.е. порой всплывали глюки, которые исчезали, стоило поменять порядок подключения пакетов. Ну и таблицы и вставка рисунков доставляет некоторые проблемы, а так в целом — это великолепный инструмент
Кроме того, она может выхватывать закономерности в тексте, и на их базе составлять ту же таблицу.
Аналогичный причандал есть в органайзере для Емакса — Org Mode; там вообще довольно крутая интерактивная таблица.
Вообще, если по секрету, еще до того, как обнаружил эти режимы — просто делал таблицы на легком и быстром AbiWord — и вставлял в текст.
Еще один вариант, когда много единообразных данных, которые надо оформить в виде таблице — то проще написать на Elisp скриптик, пишущий в нужное место текст таблицы.
Во как.
Пакет longtable — наше все)
Я пользовался в-основном последним. к нему спокойно прикручивается ASpell и словари, так что, наряду с подсветкой синтиксиса TeX, получаем spellcheck.
Кроме того, в конце статьи о ТеХ'е в Википедии есть ссылки на сайты, где можно скачать учебники. В том числе и те, о которых рассказал автор.
Да, действительно, MiKTeX — лучший дистрибутив для Windows.
Я на днях поставил TeXLive 2008 — документы компилируются нормально, но не работают средства просмотра PostScript и DVI. Причём штатную смотрелку DVI — программу dviout версии 3.18.1 — в Windows надо прикручивать вручную; для этого прилагается readme-инструкция, но мне прикрутить пока не удалось — не видит сгенерированные шрифты. В MiKTeX для просмотра DVI используется программа yap, которая нормально работает сразу после установки. Наверное, придётся ставить её.
Ghostscript и GSview для просмотра PS-файлов, вероятно, тоже надо будет поставить вручную.
Минус MiKTeX, в отличие от TeXLive 2008, в том, что с сайта и СТАN-a нельзя скачать образ диска (можно только купить за деньги). Предлагаются только инсталлер и минимальный дистрибутив, всё остальное установщик будет тянуть из интернета. Можно, наверное, где-то найти или даже собрать для себя, но это уже возня.
Можно даже собрать MiKTeX Portable. Разработчика не раз об этом просили, но он только отсылает к инструкции, как это сделать:
sourceforge.net/tracker/index.php?func=detail&aid=1910727&group_id=10783&atid=360783
оттуда ссылка на инструкцию:
ftp://ftp.fu-berlin.de/tex/CTAN/info/MiKTeX+Ghostscript+GSview+USB-drive-HOWTO.txt
Достоинство и недостаток теха в том, что это мощный, гибкий и достаточно сложный язык, и чтобы получить с его помощью качественный результат, нужно достаточно много тренироваться. В результате, если человек профессионально занимается версткой сложных изданий (научных журналов, например), то тех дает ему огромные возможности для автоматизации процесса. Если же человек пишет статью по физике, то разбираться в издательской системе… ну, визивиг для того и был придуман, чтобы его от этого избавить.
p.s. между прочим, OOo умеет составлять список литературы из БД без танцев с бубном ;-)))
p.p.s. интересует вопрос с поддержкой юникода — все же cp1251 это в некотором смысле антиквариат… ;-)
\documentclass[a4paper,10pt]{book} \usepackage[utf8]{inputenc} \usepackage[english,russian]{babel} \author{...} \title{...} \begin{document} \maketitle \tableofcontents \chapter{...} ... \end{document}Вариант комментом ниже с ucs/utf8x прошел с тем же результатом.
$ pdflatex main.tex ......... ! Package inputenc Error: Unicode char \u8:�\global not set up for use with LaT eX. See the inputenc package documentation for explanation. Type H <return> for immediate help. ... l.57 Больш\' �я часть времени преподавателей... ......... $ more 1_chapter.tex | grep Больш Больш\'ая часть времени преподавателей уходит на проверку самостоятельных и(Проблему с оглавлением пока не смог найти/воспроизвести...)
Команда \' в короткой форме, видимо, не юникодоспособна и выхватывает после себя только один октет, ломая поток utf8. Это исправляется полной формой \'{} (т.е. \'{а}), в таком виде все заработало.
MS Word, пожалуй, тоже, но блог же не об этом, правда? ;)
> p.p.s. интересует вопрос с поддержкой юникода
\usepackage{ucs}
\usepackage[utf8x]{inputenc}
Если по делу, то я считаю, что большое количество возможностей у ЛаТеХ'а появляется благодаря большому же числу пакетов. В Ворде тоже есть макросы на тот случай, если штатными средствами функциональность реализовать не удастся. Но штатных средств в Ворда очень много. Другое дело, что нередко пользователи этой программы не подозревают даже о существовании стилей.
Да, и если такое возможно, приведите, пожалуйста, несколько примеров со сносками, где ТеХ уделывает текстовый процессор компании Майкрософт. Мне это интересно, другим читателям, думаю, тоже.
Интересная постановка вопроса. :) Мне вот нужно доказывать, зачем грамотному человеку использовать Word вместо Latex.
Из простого:
1) Формулы;
2) Можно использовать любой редактор;
3) Язык скриптования;
4) Не надо грузить убийственную, глючную и ненасытную в смысле ресурсов программу;
5) Радикальных изменений в интерфейсе быть не может;
6) BibTex (говорят, стоит того, но мне не пригодилось);
7) Встречается практически под любыми платформами;
8) Стоит в бесконечное количество раз дешевле — потому что бесплатна;
9) Набор текста остается набором текста, так как не требуется трогать мышку. Вы же вслепую печатаете, да?
Из сложного:
1) Файлы-исходники можно генерить чем угодно: скрипт на Питоне, Bash, your-fav-scripting-lang легко соберет для вас отчет, который в дальнейшем не стыдно будет отослать куда угодно;
2) Формулы можно создавать автоматически. К примеру, мне надо было вставлять в отчет формулы и подставлять вместо них числа, и потом — окончательное значение. Все это производилось скриптами; НИКАКИХ СПЕЦИАЛЬНЫХ API или уродливых языков;
3) Настоящий язык программирования как бэкэнд;
4) Специальные редакторы (и некоторые неспециальные) поддерживают рисование формул on the fly, что вообще очень удобно.
Главное препятствие — некоторая нетривиальность в освоении. Но мы-то знаем, что и Офис тоже не дается без боя?
Особо радует то, что разметка документа, оглавление, перекрестные ссылки, положение рисунков на странице никак не зависят от навыков точного позиционирования мыши =)
На самом деле, если организаторы конференций, редакторы журналов и иже с ними потрудились сделать стилевой файл с документацией к ней — хватит пары-тройки дней, чтобы разобраться и сделать.
Другой вопрос, когда стилевого файла нет и пользователю приходится совмещать два уровня — пользователя LaTeX и программиста LaTeX.
На ЛОРе была хорошая цитатка «пользователи LaTeX обратно не возвращаются».
Из ссылок сильно рекомендую вот это — mydebianblog.blogspot.com/
А на самом деле страшно — только первую серьезную работу делать.
Если начать оформлять по ГОСТам курсовики можно выловить все такие недосмотренности. В качестве базы рекомендую стиль eskdx.
И никто ведь не пишет стилевики для студентов…
Да и ГОСТы зачастую выражаются в терминах «пропустить одну строку».
имхо BiBTeX все же удобнее.
Муторно это. На кафедре у нас был проект — посадить кого-нибудь из студентов-магистров поддерживать базу бибтеха. Если бы это было реализовано, это было бы удобно.
А в одного — очень неудобно.
Мне кажется стоит один раз помучиться, зато потом сэкономить кучу времени.
Про танцы с бубном. Танцы нужны если у вас список литературы на 300-500 наименований и вам нужно их по-разному сортировать. Для обычного диплома в LaTeX никаких танцев не нужно.
Вот это очень актуально, буду ждать. Спасибо за статью.
2. В Word 2007 в линейном режиме можно тоже без мышки формулы набирать. Правда конечно специальные символы вставлять в нем неудобно.
4. На сайте Microsoft есть бесплатный Add-in для Word 2007 позволяющий сохранять в PDF
www.microsoft.com/downloads/details.aspx?FamilyId=4D951911-3E7E-4AE6-B059-A2E79ED87041&displaylang=en
Но все равно… Не получится так легко собирать документ произвольным внешним инструментом. Код в форме простого текста — он в этом смысле имеет абсолютное преимущество над любым сложным форматом.
ТеХ безусловный лидер по качеству вывода.
Не-е-е-е, для научного или технического набора текстов эти штуки ну совершенно не годяться. Я ото всех Офисов отошел не от хорошей жисти. :)
Да вставлять формулы стало удобнее чем каждый раз 'Вставка->Объект->Ms Equation'. Ho есть 2 момента, которые все усилия M$ сводят на нет:
1) Греческие буквы помещены в огромнейший выпадающий список. Опять мышку в руки и понеслась
2) Допустим я хочу вставить формулу по центру (когда 4х-уровневая дробь — по-другому никак), и после формулы я хочу объяснить входящие в нее обозначения. Я ставлю после формулы запятую, и Word автоматически сбрасывает выравнивание по-центру. Опять, мышку в руки и как обычно
Не дружу я как-то с Word'ом =)
\int^10_20сразу получаете интеграл. Греческие буквы тоже понимает.*Ушёл в профиль, ставить памятник.* ;)
Я как раз несколько дней назад начал писать диплом в LaTeX.
Но опыта и знаний пока маловато
Пожже мне эти знания здорово пригодились!
Больше всего удовольствия доставляет тот факт, что не надо запускать монстроидальную программу в форме любого офиса, будь то бесплатные OOo или Lotus Symphony, или Ms Office. Они медленные по определению, там куча всякого вспомогательного добра ежесекундно насилует процессор, достовляет массу секунд ожидания… Ну их :)
Ну не надо совсем уж в розовом свете всё расписывать. Тех — он как линукс, чтобы им _пользоваться_, надо знать большую часть его внутреннего устройства и более-менее разбираться во всём зоопарке его вариантов.
Для примера — попробуйте поставить миктех 2.7 и применить к нему pscyr, пользуясь рекомендациями данной статьи. Не получится. Оно просто не работает. _На самом деле_ надо качать последнюю версию pscyr (а не ту, на которую тут ссылка) и творчески копаться в miktex/bin, потому что с версии 2.4 там все названия тулзов поменялись.
И то я вот сейчас его более-менее допинал, но шрифт «Лазурский» всё равно не работает, а в остальных шрифтах всё печатается кроме макросов \TeX и \LaTeX…
И вот такая херня на каждом шагу.
Да, «тот факт, что надо обновить шрифты описан в документации» — это означает, что человек, чтобы _пользоваться_ системой, должен знать, как в неё производить администраторские действия. Именно об этом я и пишу.
Заметьте я и не позиционировал LaTeX как инструмент для людей, которые не могу прочитать документацию и освоить систему. Такие пусть покупают MS Office, если они думают, что там им будет легче — это их выбор. Лично для меня LaTeX же удобный инструмент, который я использовал для оформления курсовых и диплома. Я его освоил, я про это пишу.
Я, в общем, не отношу себя к чайникам, но сложность системы видна сразу и я примерно понимаю, сколько времени мне понадобится на её освоение в нужном объёме. Достаточно много. Когда ты студент и времени не считаешь — это одно. Когда ты уже плотно работаешь с несколькими достаточно сложными системами и тебя надо изучать ещё одну — это совсем другое.
К сожалению, внятной альтернативы теху не видно, так что я его, конечно, допинаю…
А Латех… за три сек скомпилировал после большого куска текста, можно даже главы — глянул, что да как, поправил. Никакой ругани с разметкой, никаких ожиданий подгрузки, поисков по меню…
Да и ничего особенного она не тянет. Скажем, ставишь пакет tetex в debian или Ubuntu, а все остальное уже там в комплекте будет. Если же чисто в мегабайтах разговор вести, то вообще не приходится сравнивать, сами понимаете.
Повторюсь, ничего особенного. Для того, чтобы с программу настроить и в ней разобраться — Так обычно специальный человек вопросами администрирования занимается, его проблемы. А для личного пользования обычно его в любом случае только более-менее образованные люди используют.
А пользоваться… Вы действительно думаете, что без специального обучения секретарша сможет грамотно пользоваться Офисом?
С Латехом же поставил tortoiseSVN, показал, какие кнопочки жать. Сказал, что для параграфа — то-то, для картинок — то-то; и все — вперед.
Я не об использовании, я о настройке. Конечно, сферический тех в вакууме работает. Пока ты не захочешь писать, скажем, по-русски, и не обнаружишь с полдюжины взаимоисключающих вариантов русификации… У меня нет специального человека, я сам себе специальный человек. Вроде не первый день в IT, однако с полпинка во всём этом зоопарке разобраться не могу.
Насчёт чисто-в-мегабайтах — вчера поставленный миктех сейчас у меня занимает 240 Мб и содержит 12000 файлов. По мне так это дохренищща и вполне сравнимо с *Office. Ничего я с ним не делал — только позволил скачать всё что он считал нужным для работы с русским языком.
А так, если ничего кроме параграфов, заголовков и формул не надо и есть специальный человек — то да, отличная система…
Ну и все. Дальше — на поток уже это дело поставил.
А то и ни стандартное английское прочтение, и ни оригинальное авторское — мутант какой-то :^)
> WYSIWYG-подход ограничивает мою свободу. Я обязан делать не так как мне надо (например не так >как указано в стандарте оформления), а так как реализовано в визивиг-редакторе
Спорно — аналогично, в латехе шаг вправо или влево — ошибка компиляции. Многие, казалось бы, несложные вещи решаются лишь с помощью сторонних (неочевидных) средств. Например, в своё время отняла довольно много времени необходимость сделать многостраничную таблицу.
>Набор формул — один из основных факторов. Набрать в ворде какую-нибудь сложную формулу бывает >очень не просто
Мсье не знает про MathType. Хотя уже вроде как шестая версия вышла. Там тоже есть язык формул (по-моему, даже ТеХ-совместимый).
>Богатейшие возможности макропрограммирования.
Верно, но не будем забывать про макросы в Офисе.
>проблема решается конвертацией в PDF
Это не задача переносимости, а задача печати. В ПДФ можно сконвертировать что угодно — от картинки до документа Ворда. И здесь Латех не уникален.
>Оглавление и список литературы. Автоматическая генерация оглавления есть и в ворде, но многие так и не научились ею пользоваться
Те, кто не научился — те и в Латехе не сумеют. Это легко.
>большинство LaTeX пакетов бесплатны
ну это факт :)
Ещё есть полезная вещь — автогенерация библиографии (в Ворде лучше всего решается с помощью EndNote).
Вообще в Ворде макросы+стили могут творить чудеса. Например, я активно использую автоматическую нумерацию заголовков, рисунков и таблиц.
Вот чего я до сих пор в Ворде не научился делать (а в Латехе это делается легко) — так это плавающее размещение рисунков. Если нужно вставить рисунок после какого-либо абзаца, в Латехе можно указать «плавающее» размещение — и рисунок поместят где это возможно. В ворде же можно наблюдать такой эффект: рисунок не влезает на страницу, переносится на следующую, а прямо после абзаца куча пустого пространства. Вот это плохо.
По остальным замечаниям:
1. Я написал, что озвучиваю субъективное мнение. Я программист и мне не привыкать решать ошибки компиляции, у меня даже это хорошо получается. А вот ровно двигать границы таблички — не всегда. Может быть руки кривые, не знаю.
2. Автогенерация оглавления легко, но попробуйте автосгенерить оглавление по ГОСТ.
3. Макросы и стили могут творить чудеса и в LaTeX, я не ставил своей целью унизить пользователей ворда или хаять ворд. Ворд хорошая штука, если им уметь пользоваться. Но вот я не умею, мне LaTeX освоить оказалось проще. Поэтому и пишу о нем.
Насчёт МафТайпа — тоже верно, хотя речь о бесплатности не шла, шла речь о возможностях :)
Хотя есть какие-то бесплатные аналоги (например, www.rusedu.ru/detail_262.html), но я не пользовался, поэтому их рекламировать не буду.
Макросы? В Ворде? Не смешите!
В ТеХе есть полноценный язык, вы можете хоть модуль свой написать при необходимости, не то, что макрос! И конечно, все нормальные люди объявляют себе несколько команд для удобства ;)
По сравнению с ТеХом, в Ворде вообще нет никакой автоматизации.
> Ещё есть полезная вещь — автогенерация библиографии (в Ворде лучше всего решается с помощью EndNote).
man bibtex
> Вообще в Ворде макросы+стили могут творить чудеса. Например, я активно использую автоматическую нумерацию заголовков, рисунков и таблиц.
А ссылаетесь вы на них как? Я — по удобным меткам. Если номер картинки съедет (был 1, стал 2), ссылки на неё типа «см. рис 1» тоже съедут (станут «см. рис. 2»). То же самое с формулами, таблицами, а также разделами, секциями, параграфами и т. д. — вообще со всеми объеками.
В Ворде, чтобы этого надо добиться, нужно ещё найти, как на них ссылаться. В ТеХе это работает искаропки.
Про стили я не говорю — если в ворде 99% документов делаются безо всяких стилей. А в LaTeXе без них сделать просто невозможно — там нет команд «шрифт жирный» или «размер 19 пойнтов» — только «стиль boldface» или «текст крупный», которые, конечно, являются стилями и определены вообще в классе документа.
На VBA можно и модуль, и класс, и WinAPI поюзать, и DLL и вообще что угодно… Хоть я сам и не особый поклонник VBA, но не будем недооценивать возможности.
2. «А ссылаетесь вы на них как?» — я ссылаюсь по коду объекта. В Ворде можно сослаться на любой именованный объект (коим может быть, например, рисунок), и при изменении подписи к рисунку или его номера уникальное имя сохраняется. Короче говоря, примерно так же, как и Вы. И с таблицами, и с разделами.
То, что это неудобно реализовано — согласен, но мне плевать — потому что ещё пару лет назад обернул всё это в удобную макросовую обёртку и вынес кнопки на панель. Щелчок мыши — и всё готово.
3. Насчёт того, что пользователи не хотят работать со стилями — верно, не хотят. Но это не значит, что надо заставлять из-под палки. Я пользуюсь стилями активно, а кто этого не делает — его проблемы.
Не хочу наводить напраслину, но язык-то ужасный. Моей сестре большую курсовую на нем задали делать: экономическая игра в Excel на VBA. Разумеется, я принимал в этом участие. Там каша мутная, а не программирование!
На самом деле для меня большое разочарование, что VB.NET — уже вполне пристойный язык (по сравнению с VB — точно), а вот в Офисе языковую начинку не трогают уже лет десять точно. Я думаю, давно пора делать реальный апгрейд, а не новые кнопочки рисовать…
Через репозиторий, конечно, можно работать, но мне не кажется, что это очень удобно…
А в ЛаТехе рецензент должен отдельно открыть PDF (чтобы видеть текст в нормальном виде), а правки вносить в исходный .tex файл. Если рецензентов несколько, ещё сложнее понять, кто что делал. Если мы работаем над одним проектом, надо всех из заставить использовать общий репозиторий.
Короче говоря, технически сложно реализовать совместную правку документа посредством ТеХ-системы. Она на это, видимо, не была рассчитана изначально, и все нынешние решения — своего рода подпорки.
Это, наверное, было бы очень актуально для книги, которую пишет много авторов. И было бы удобно, если дополнительно разбить проект на несколько файлов.
Первое — перевернули с ног на голову, визуальное редактирование предпочтительнее и является развитием обычного, а не наоборот.
Второе — для быстрого набора формул в Word и т.п. откройте справку по шорткатам.
Третье — это не программирование, а насилие мозга. Более неочевидный, неожиданный и запутанный язык нужно еще поискать. Откройте какой-нибудь модуль, как правило, если начать разбираться, как он работает, то волосы встают дыбом на всех местах. Порой вещи сделаны через такое заднее место, что удивляешься, как они вообще работают.
С четвертого по седьмое — просто смешно. Как сделать человека счастливым? Сначала сделать ему плохо, а потом как было.
Мое резюме — если вы еще думаете, использовать это чудо или нет, то однозначный ответ — нет.
А теперь к делу. Визуальное редактирование проще, но оно не побуждает использовать весь спектр возможностей невизуальных, таких как стили, написание макросов и т.д.
В результате большинство документов сверстано так, что смотреть страшно.
Если рассматривать Latex, как способ чем-то занять студентов на долгое время, то он вне конкуренции. Только рано или поздно юнешеский максимализм проходит, когда приходится решать реальные задачи в ограниченное время.
LaTeX — стандарт для некоторых зарубежный изданий и от этого тоже никуда не уйдешь.
Но ему безумное количество лет; давно пора либо закончить работу над третьей версией, либо представить нечто альтернативное и более эффективное в том же ключе.
Помимо технической документации есть масса других применений текстовых процессоров. Латех — стандарт де-факто для научных публикаций, как минимум.
А применение его в других областях под большим вопросом, т.к. есть более адекватные инструменты.
У меня для Латеха четыре области:
1) научный текст с обилием формул и иллюстраций;
2) специальный текст с кучей исходного кода и блок-схем;
3) художественный текст средних размеров без специальных иллюстраций, или с малым их количеством;
4) небольшие шаблонные документы на самые разные темы.
Эти задачи он решает отлично. Какие неподходящие области предложите вы?
Простите, вы с чем сравнивали-то? Относительно чего — это идеальный инструмент?
Кнут он крут, чтоб его. :)
Ну, из Латеха можно публиковать в красивые html-документы, info-файлы, и прочую лабуду, которую принятно держать за документацию на компе. Народ любит статейки на айтишные темы таким образом публиковать, потому как очень удобно можно исходники включать.
а совсем мелкие задачи… так для них и Word не вполне подходит.
Если что, я набирал в Equation курсовую работу по ТОЭ.Приведите аргументы. Например: «Я, мол, такой-то такой-то, такого-то года рождения, не понял, почему/как работает/с какого перепугу в LATEX то-то и то-то; в связи с этим считаю вышеописанный язык тем-то и соответственно к нему отношусь».
\def\f@ncyhf#1[#2]#3{%
\def\temp@c{}%
\@forc\tmpf@ra{#2}%
{\expandafter\if@in\tmpf@ra{eolcrhf,EOLCRHF}%
{}{\edef\temp@c{\temp@c\tmpf@ra}}}%
\ifx\@empty\temp@c\else
\@fancyerrmsg{Illegal char `\temp@c' in fancyhdr argument:
[#2]}%
\fi
\f@nfor\temp@c{#2}%
{\def@ult\f@@@eo{eo}\temp@c
\if@twoside\else
\if\f@@@eo e\@fancywarning
{fancyhdr's E option without twoside option is useless}\fi\fi
\def@ult\f@@@lcr{lcr}\temp@c
\def@ult\f@@@hf{hf}{#1\temp@c}%
\@forc\f@@eo\f@@@eo
{\@forc\f@@lcr\f@@@lcr
{\@forc\f@@hf\f@@@hf
{\expandafter\fancy@def\csname
f@ncy\f@@eo\f@@lcr\f@@hf\endcsname
{#3}}}}}}
Вот Perl regexps — в наипростейшем исполнении жуть непотребная. Но при желании им можно придать очень и очень читаемую форму даже банальными переносами.
Test2:
upload.wikimedia.org/math/5/f/7/5f7762fd6d56047f18ea43f55c1f85ff.png
\documentclass[12pt]{article} \begin{document} Test 1: % Можно было бы определить команду для % \frac{\partial A}{\partial B}, но будем считать, что это учебный пример \[ \rho \left(\frac{\partial v_i}{\partial t} + v_k\frac{\partial v_i}{\partial x_k} \right) = - \frac{\partial P}{\partial x_i} + \frac{\partial}{\partial x_k} \left\{ \mu\left( \frac{\partial v_i}{\partial x_k} +\frac{\partial v_k}{\partial x_i} -\frac{2}{3}\delta_{i,k}\frac{\partial v_l}{\partial x_l} \right) \right\} + \frac{\partial}{\partial x_k} \left( \zeta \frac{\partial v_l}{\partial x_l} \delta_{i,k} \right), \] Test 2: \[ \varepsilon_{ijk\ldots} \varepsilon^{pqr\ldots} = \det \left | \begin{array}[]{cccc} \delta_i^p & \delta_i^q & \delta_i^p & \ldots \\ \delta_j^p & \delta_j^q & \delta_j^p & \ldots \\ \delta_i^p & \delta_k^q & \delta_k^p & \ldots \\ \vdots & \vdots & \vdots & \ddots \end{array} \right | \] \end{document}А выглядит результат точно как на картинках — ведь Википедия использует TeX для вёрстки формул :)
Его делали для научных статей.
Посмотрите, например, на программирование на Java в Eclipse, которая в фоне компилирует исходник. Вот так должна выглядеть современная система.
На выходе получается исходник, который гарантированно скомпилируется. Так же, как корректный документ получается в MSWord, OpenOffice, DocBook, Dita и т.п.
Мы живем в 21 веке, а не в 60-70 годы прошлого.
Ваша проблемы с Латынью решается любым серьезным редактором. В Емаксе можно подключить всякие подсказки, предпросмотр кода, формул, таблиц и все такое…
В Емаксе также можно компилить код на фоне…
ну и так далее.
Емакс — все больше по делу :)
Это не повод выбрасывать старые, проверенные временем технологии, которые к тому же до сих пор успешно используются и замены им не видно.
\ifnum\count@>30 \typeout{^^J% !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!^^J% ! You are attempting to make a LaTeX format from a source file^^J% ! That is more than two years old.^^J% !^^J% ! If you enter <return> to scroll past this message then the format^^J% ! will be built, but please consider obtaining newer source files^^J% ! before continuing to build LaTeX.^^J% !^^J% ! LaTeX is re-issued every year in June.^^J% !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!^^J% } \errhelp{To avoid this error message, obtain new LaTeX sources.} \errmessage{LaTeX source files more than 1 year old!} \fiИ это не единственная подстава в «идеальном» продукте.
Вполне ясно написано, что используются слишком старые исходники латеха и лучше бы их обновить.
Вполне естественное и нормальное поведение для любой программы.
Видимо вы невнимательно читали предупреждение:
>>If you enter to scroll past this message then the format^^J%
! will be built, but please consider obtaining newer source files^^J%
! before continuing to build LaTeX.^^J%
>>>
Перевод:
Если вы нажмете ентер чтобы пропустить это сообщение, то формат соберется, но пожалуйста найдите исходники поновее, перед тем как собирать латех.
З.Ы. Вы собирали латех из исходников годовой давности, при наличии новых, лежащих в свободном доступе??!!! OMG!!!
У меня TexLive
А команды fmtutil.exe у меня увы нет. Есть только fmtutil.
>>>
You are attempting to make a LaTeX format from a source file^^J%
! That is more than two years old.^^J%
----------skipped--------------
\errhelp{To avoid this error message, obtain new LaTeX sources.}
\errmessage{LaTeX source files more than 1 year old!}
>>>
Вы пытаетесь собрать формат латеха из исходных файлов, которым старше на более чем 2 года.
-----------пропущено-----------------
Чтобы не получать это сообщение об ошибке, достаньте новые исходники латеха.
Исходники латеха устарели более чем на год!
?????..
Потом, не дело программы решать за пользователя, что с какого-то момента она не должна работать. Хороши тоном является предупредить «warning», а не вывести сообщение об ошибке «error».
При использовании устаревших форматов есть вероятность того, что dvi файл на выходе будет отличаться от того, который был бы получен с новым форматом, что недопустимо для латеха. В __нормальных__ дистрибутивах, повторюсь, использование такого старья ___в принципе___ невозможно.
Кроме того, использование вытащенных неизвестно с какой антресоли древних исходников, при наличии новых ___в свободном доступе___ кажется мне просто верхом идиотизма. Такое ощущение, что это сделали намеренно для разжигания флейма в этом треде.
Посему обсуждать далее вопли «вот какой Латех нехороший, он не дает пользователю использовать устаревшии версии» считаю бессмысленным.
Как видите, для теха есть и визуальные редакторы, так что проблем с компиляцией не возникает даже у новичков.
Не знаю как сейчас, а в его старых версиях была встроена деструктивная функция: при кривой регистрации он портил прозвольные файлы на диске.
Некоторые полезные ссылки:
Львовский online.
Про LEd отдельное спасибо.
Итак, учитывая все выше сказаное — хотелось бы узнать следующие.
У меня задачи довольно банальные. Мне надо генерировать всякие архитектурные документы для печати (типа инженерные нагрузки и т.п.). Понятно, что для этого нужен пакет ESKD. Хочется побольше узнать о генерации текста из разных шаблонов.
И второе — хочется приспособить LaTex для печати договоров — подскажите мне стиль и класс подходящий для этого.
Всем спасибо.
Да и еще хотелось бы побольше примеров связанных с коммерческим использованием, то есть не для написания диссертаций и т.п. А именно для реального применения в фирме.
Но конечно же большой минус это то что сходу его ничем не просмотриш на неподготовленом компе, по моему формат бы ожил если бы позволял генерить PDF (может сейчас уже до этого кто то додумался).
Спасибо за основание блога, сейчас напишу сюда топик =)
vim
vim-LaTeX
http://kotomanov.habrahabr.ru/blog/48099/
habrahabr.ru/blogs/latex/48099/