Pull to refresh

Создаем резюме на LaTeX — как и зачем?

Reading time 5 min
Views 89K
Многие документы я подготавливаю в LaTeX, а не в Word. И к моменту, когда я определяюсь со следующим местом работы, я подвожу итоги сделанного, и, уж чтобы не пропадало, фиксирую их в документах, составляющих каркас моего CV. По моему личному убеждению, тщательность в создании документов для будущего работодателя нужна не столько для коммуникаций с «эйчарами», сколько для осмысления дороги, по которой идешь, и направления, в котором решаешь двигаться дальше. Итак, почему я для резюме выбрал LaTeX?

Маленькое введение в тему для тех, кто не в курсе, что такое LaTeX. Это процессор, на входе принимающий язык разметки, на выходе дающий PDF с готовым документом. Язык разметки говорит процессору, что в документе что, где картинки и зачем, автоматически верстаются таблицы, картинки, ссылки на них, оглавление, индекс, сноски и т.д. Идеальный инструмент для совместной работы, для сложных больших документов, с графиками и формулами, в которые могут внести серьезные правки в середину за полчаса до печати и надо успеть. Также могут быть вынесен отдельно стиль, как CSS в HTML. Автор сосредоточен на контенте, а при публикации применяются стили документа, куда включена статья автора. По этим причинам все математические и физические журналы верстаются только в LaTeX.

Давайте посмотрим на исходник. Он в случае моего резюме выглядит так: http://pastebin.com/eqM1f2AY . На первый взгляд, он пугающе сложен, особенно для тех, кто слышит про LaTeX впервые. В действительности, если прокрутить на серединку, можно увидеть аналогию с языком разметки, и заметить логическое разбиение. Например, вот небольшой кусок моего документа из другого документа про публикации — http://pastebin.com/cy3r1paX.

Вот такой документ в PDF я получаю в итоге:

http://raufaliev.ru/cv/eng/full/

Мне удобно, что я могу включить исходник документа под систему контроля версий и делать «бранчи» под разные нужды — то есть, налаживать совместную работу над документом точно так же, как она ведется над программным кодом. Мне удобно, что для того, чтобы в нескольких документах заменить схему, мне достаточно просто экспортировать новую версию в то же имя файла на диске и при следующей сборке PDF подтянется новая версия. Если она окажется на 1 см длиннее, то LaTeX скорее всего правильно переверстает все до конца документа, заменит все ссылки, не допустит висячих строк и т.д.

Поправив в тексте одну строку, я «компилю» расширенную версию резюме или сокращенную. Если мне необходимо вынести какой-то фрагмент сразу в два документа, я выношу его в отдельный файл и включаю на него ссылку из двух мне нужных документов. Это очень удобно в случае резюме, когда приходится готовить много версий под разные позиции.

Русская версия (полная) Русская версия (компакт) Английская версия (полная) Английская версия (компакт)
http://raufaliev.ru/cv/rus/full/ http://raufaliev.ru/cv/rus/ http://raufaliev.ru/cv/eng/full/ http://raufaliev.ru/cv/eng/


Для кадровых агентств нужен Word-вариант, так как они для клиентов заполняют собственные формы копи-пастом из резюме, а из PDF это сделать непросто. Для LaTeX в общем случае помогает конвертор TeX4ht, он же умеет экспортить в Word. В моем случае это не очень помогло: но на сколь-нибудь сложных документах «плывет» верстка, он не умеет работать с условными конструкциями, есть и другие ограничения. Поэтому Word-версию пришлось делать отдельно — word-вариант. Но в большинстве случаев выходит довольно сносный результат.

Очень удобным средством автоматизации сходным образом оформленных блоков в LaTeX являются макроопределения, задающиеся командой \newcommand. Можно любой фрагмент документа параметризовать — то есть, вместо реальных блоков подставить #1, #2, #3, и далее этот кусок вызывать по имени, передавая в фигурных скобках после имени эти параметры.

\documentclass[12pt]{article}
\newcommand{\theline}[2] { %создаем макрос, печатающую строку в резюме
  \item \textbf{#1} -- #2 }
\begin{document}
\begin{itemize}
 \theline{2012-2013}{Company1}
 \theline{2011}{Company2}
\end{itemize}
\end{document}


LaTeX — отличная технология, когда:
  1. несколько документов имеют общие блоки и хочется править их в одном месте, а не в каждом документе,
  2. хочется сделать условную сборку документа — например, не включать какой-то набор абзацев/разделов для определенной версии документа, или включать дополнительные. При этом быть уверенным, что все ссылки, нумерация, оглавление и проч. не «поломаются»,
  3. много людей работают над своими кусками и в последнюю минуту нужно учесть их последние версии,
  4. документ очень сложный (со сносками, с перекресными ссылками, картинками, таблицами, формулами),
  5. есть внешние данные, которые надо собрать в PDF (например, CSV),
  6. не хочется или не нужно или нет времени/сил/желания думать об оформлении, но и не хочется отдавать «полуфабрикат». LaTeX позаботится о том, чтобы документ выглядел стильно, а дело автора — за контентом.


Существенными плюсами LaTeX является то, что почти все «проблемы» с LaTeX уже кто-то решил, все отлично гуглится. Под проблемами понимается все нестандартное: LaTeX не очень любит отступлений от best practice, но если очень надо — допускает. Но приходится гуглить и искать решения самому.

Минусом LaTeX является относительно плохая читаемость «исходного кода». Управляющие конструкции несколько замусоривают текст и те же таблицы без взгляда на скомпилированный PDF понять не всегда просто. Несовместимость с HTML и Wiki, например, не позволяет применять одни и те же блоки для отображения в веб, в Wiki и в PDF — а это довольно частая задача, например, для поддержания документации в актуальном виде в печатной версии, в версии Wiki и в публичной онлайн-версии для партнеров. Конверторы отчасти решают задачу, но приходится идти на целый ряд компромиссов.

В качестве необычных экспериментов, я могу вспомнить попытку верстать в LaTeX презентации (есть для этого специальный пакет Beamer) и бейджики-визитки с QR-кодами (есть тоже специальные пакеты). В случае презентаций можно «в один клик» сгенерировать слайд-сет для определенной категории клиента, что невозможно в Microsoft PowerPoint. О создании презентаций на Хабре уже писали. В случае с бейджами-визитками легче автоматизировать печать сложных PDF — тут понадобятся навыки программирования, но работать с LaTeX может оказаться удобнее, чем программисту генерировать PDF самостоятельно. Например, для визиток у меня один раз была отлажена страница с визитками (включая автосоздание QR-кода средствами LaTeX-модуля), а далее я скормил LaTeX список из нескольких тысяч строк Фамилия-Имя-Компания-Должность-Телефон-Е-майл, и на выходе получил PDF из нескольких тысяч страниц с полностью подготовленным комплектом визиток, с метками под обрез и т.д.

И в завершение, хотел посоветовать сервис WriteLatex.Com. Он позволяет в реальном времени компилировать документ, а для начала предоставляет каркас, который легко исправлять под свои нужды (и заодно разобраться с синтаксисом). Такая «песочница», в которой легко опробовать технологию. Пока пишешь исходник документа, в соседнем окне обновляется PDF. Более того, в нем можно редактировать документы совместно нескольким лицам, причем он нормально «переваривает» одновременное редактирование одного документа. Использование writelatex.com позволяет не ставить себе большой дистрибутив MikTeX (Windows) или MacTex (MacOS) для того, чтобы определиться, насколько это нужно и полезно.

UPDATE: спасибо — есть еще очень симпатичный аналог writelatex свежий сервис Papeeria (http://habrahabr.ru/post/179021/). Кстати, там авторизация через вконтактик в т.ч., очень необычно (а вот через facebook — нет).
Tags:
Hubs:
+73
Comments 71
Comments Comments 71

Articles