С чего все началось?
Все началось с того, что мне предложили принять участие в одной конференции. К требованиям вроде «тезисы подаются в формате ворд!» я кое-как привык, но мое терпение лопнуло, когда мне на почту пришел бланк «заключения о возможности открытой публикации».
Бланк представлял из себя .doc файл, изобилующий типичными для русского документооборота полями для заполнения рукой в нужных местах: горизонтальная линия во всю строку с пояснением под ней (например «ФИО, должность, подпись»). Все становится еще веселее, если включить отображение скрытых символов.
Казалось бы, нажми на клавиатуре insert да печатай «поверх» набитых линеек, что сложного? Действительно, сначала я попытался сделать именно так, но вся эта «красота» постоянно ломалась, выезжала за поля и действовала мне на нервы. Чего только стоит кегль текста, норовящий сорваться с 12 на 8, а потом обратно. Поскрежетал я зубами минут 20 и принял ультимативное решение сделать все в латехе. В итоге
Приступаем к верстке
!!!
Все имена и названия вымышлены. Любые совпадения с реальными людьми, организациями и адресами случайны.
!!!
Давайте же представим, что сотрудник НИИ «Электронных систем управления» Кузнецов К. отправляется на замечательный форум «Электронные системы управления» в замечательный город Новые Васюки, чтобы представить доклад «Периферийные вычисления для систем управления».
Преамбула
В 2019 работать в латехе достаточно легко: выбираешь редактор по душе, объявляешь тип документа, подгружаешь нужные пакеты и больше не вспоминаешь про оформление своего текста.
Ничего не изменилось и в этот раз: выбираем формат А4, 12 кегль и отключаем титульную страницу. Если я не ошибаюсь, то часть этих опций являются значениями по-умолчанию для класса article. Заодно подключаем пакет, нормализующий отображение в pdf:
\documentclass[12pt,a4paper,notitlepage]{article}
\usepackage{cmap}
Затем необходимо указать кодировку исходного текста, семейство шрифтов и подключить русский язык:
%%% language, font, encoding
\usepackage[T2A]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[russian]{babel}
Стандартные поля в латехе на мой взгляд совсем широкие, явно шире полей в исходном бланке. Работать с ними я предпочитаю с помощью пакета geometry. Обычно я использую по 2 см со всех сторон. Вежливо отказываемся от колонтитулов:
\usepackage[top=2cm,bottom=2cm,left=2cm,right=2cm,nohead,nofoot]{geometry}
Поскольку у нас используются подстрочные пояснения, необходимо увеличить междустрочный интервал. Это легко сделать с помощью \linespread, но я предпочитаю специализированный пакет:
\usepackage[doublespacing]{setspace}
В присланном бланке присутствовал логотип компании, однако, если вам не нужны изображения в документе, данный пакет можно не подключать:
\usepackage{graphicx}
А теперь самое интересное! Именно эти пакеты сделали всю работу за меня. Фирменный пакет американского математического общества amsmath определяет макрос underset, позволяющий создавать «подстрочный» текст, и пакет ulem, донельзя облегчающий работу с подчеркиваниями:
\usepackage{amsmath}
\usepackage{ulem}
Тело документа
Вбиваем привычные begin-end{document} и начинаем творить. Дизайн у нас будет абсолютно ручной, поэтому не помешает очистить стиль страницы:
\pagestyle{empty}
\begin{figure}[t!]
\includegraphics[width=0.4\textwidth]{logo.png}
\end{figure}
В заявлении обычно присутствует штамп. На хабре я видел, как его релизуют с помощью таблицы с заданной шириной. Такой подход мне не понравился, поскольку у таблицы есть параметры arraystretch и tabcolsep, которые немного портят отступы и форматирование. Их всегда можно переопределить, но на мой взгляд в разы легче воспользоваться окружением minipage. Лично я предпочитаю, чтобы машина сама подобрала необходимые интервалы, для этого существует hfill. Однако, нам не всегда необходимо заполнить всю строку, как, например, в случае с датой. Здесь мы с помощью rule оставим необходимое место:
\begin{flushright}
\begin{minipage}{0.4\textwidth}
\centering{
УТВЕРЖДАЮ\}
\raggedright{
Генеральный\hfillдиректор\hfillЗАО\hfill<<НИИ\hfillЭСУ>>\\hrulefill~Иванов~И.~И.\}
<<\hspace{0.25cm}>>~\rule{2cm}{0.25pt}~201\hspace{0.25cm}г.\hfill
\end{minipage}
\end{flushright}
Сделать строку для номера указа также не составит труда. Кажется, в каком-то из пакетов отдельно определен символ "№", но я нахожу нерациональным подключать целый пакет только ради него:
\begin{flushleft}
\rule{2cm}{0.25pt}~N$^{\underline{\circ}}$~\rule{2cm}{0.25pt}
\end{flushleft}
Указываем название документа и выравниваем по центру строки:
\begin{center}
Экспертное заключение\о возможности опубликования информации
\end{center}
Наконец, нам выдалась возможность воспользоваться пакетом ulem. Для нас пакет примечателен в первую очередь тем, что подчеркнутый текст автоматически переносится на следующую строку в отличие от underline. Мы не знаем, сколько пространства займет текст, и чтобы линии всегда доходили до полей, мы добавляем hfill.
Экспертная комиссия (руководитель-эксперт) ЗАО <<НИИ ЭСУ>> \uline{исполнительный директор ЗАО <<НИИ ЭСУ>> Петров П. П.\hfill}\
Теперь мы дошли до самой интересной части документа. Подстрочные пояснения мы реализуем с помощью макроса underset пакета amsmath. Единственная проблема, возникающая при таком подходе — работа в математическом режиме. Соответственно, hfill нам уже не поможет. Тут нам придется проделать немного больше работы: вручную растянуть боксы с помощью hspace и расставить при необходимости принудительные переносы. Изначально я пытался автоматизировать и эту часть при помощи resizebox пакета graphicx, но это не привело к удобоваримым результатам. (Приглашаю в комментарии знатоков ТеХ-программирования).
рассмотрев\$\underset{\text{(ФИО автора, вид, название материала)}}{\text{\uline{тезисы и доклад Кузнецова К. К. <<Периферийные вычисления для систем управления>>\hspace{2.75cm}}}}$\\uline{для участия в форуме <<Электронные системы управления>>, проводимом с 1 по 10 сентября 2019 года по адресу г. Новые Васюки, Российская Федерация, ул. Пушкина, дом 37\hfill}\
Самая юридически важная часть заявления:
Подтверждает, что представленный материал:\\
$\underset{\text{(содержит ли информацию с ограниченным доступом или компетенции МО РФ)}}{\text{\uline{информацию с ограниченным доступом или компетенции МО РФ не содержит\hspace{4.25cm}}}}$\На публикацию материалов получить разрешение:\hfill$\underset{\text{(следует ли)}}{\text{\uline{\hspace{3.5cm}не следует\hspace{3.5cm}}}}$\$\underset{\text{(наименование организации с указанием ведомственной принадлежности, заказчика работ)}}{\rule{\textwidth}{0.25pt}}$\Заключение экспертной комиссии: \uline{Тезис и доклад могут быть опубликованы в открытых источниках\hfill}\
Наконец, назначаем ответственных экспертов. Можем оставить и так, а можем вписать реальные фамилии и должности, не забыв при этом про hspace:
$\underset{\text{(должность, подпись, инициалы)}}{\rule{\textwidth}{0.25pt}}$\$\underset{\text{(должность, подпись, инициалы)}}{\rule{\textwidth}{0.25pt}}$\$\underset{\text{(инициалы руководителя подразделения, должность, подпись)}}{\rule{\textwidth}{0.25pt}}$\
Финальные штрихи
Почти всегда любой документ разбит на логические части, которые очень легко расположить на листе, поместив между ними vfill. Возвращаясь к оформлению строк, если никак не получается сделать ровную линию до полей, то можно оставить ее немного меньше и уже в начало строки добавить hfiil.
Отдельную благодарность я хотел бы выразить авторам статей:
habr.com/ru/post/207364 за авторством dbarashev
habr.com/ru/post/144648 за авторством Skiminok
Удачной верстки!
\documentclass[12pt,a4paper,notitlepage]{article}
\usepackage{cmap}
%%% language, font, encoding
\usepackage[T2A]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[russian]{babel}
%%% pagesize
\usepackage[top=2cm,bottom=2cm,left=2cm,right=2cm,nohead,nofoot]{geometry}
%%% line spacing and indentation
\usepackage[doublespacing]{setspace}
%%% working with graphics
\usepackage{graphicx}
\usepackage{amsmath}
\usepackage{ulem}
\begin{document}
\pagestyle{empty}
\vfill
\begin{flushright}
\begin{minipage}{0.4\textwidth}
\centering{
УТВЕРЖДАЮ\}
\raggedright{
Генеральный\hfillдиректор\hfillЗАО\hfill<<НИИ\hfillЭСУ>>\\hrulefill~Иванов~И.~И.\}
<<\hspace{0.25cm}>>~\rule{2cm}{0.25pt}~201\hspace{0.25cm}г.\hfill
\end{minipage}
\end{flushright}
\vfill
\begin{flushleft}
\rule{2cm}{0.25pt}~N$^{\underline{\circ}}$~\rule{2cm}{0.25pt}
\end{flushleft}
\vfill
\begin{center}
Экспертное заключение\о возможности опубликования информации
\end{center}
\vfill
Экспертная комиссия (руководитель-эксперт) ЗАО <<НИИ ЭСУ>> \uline{исполнительный директор ЗАО <<НИИ ЭСУ>> Петров П. П.\hfill}\рассмотрев\$\underset{\text{(ФИО автора, вид, название материала)}}{\text{\uline{тезисы и доклад Кузнецова К. К. <<Периферийные вычисления для систем управления>>\hspace{2.75cm}}}}$\\uline{для участия в форуме <<Электронные системы управления>>, проводимом с 1 по 10 сентября 2019 года по адресу г. Новые Васюки, Российская Федерация, ул. Пушкина, дом 37\hfill}\Подтверждает, что представленный материал:\\
$\underset{\text{(содержит ли информацию с ограниченным доступом или компетенции МО РФ)}}{\text{\uline{информацию с ограниченным доступом или компетенции МО РФ не содержит\hspace{4.25cm}}}}$\На публикацию материалов получить разрешение:\hfill$\underset{\text{(следует ли)}}{\text{\uline{\hspace{3.5cm}не следует\hspace{3.5cm}}}}$\$\underset{\text{(наименование организации с указанием ведомственной принадлежности, заказчика работ)}}{\rule{\textwidth}{0.25pt}}$\Заключение экспертной комиссии: \uline{Тезис и доклад могут быть опубликованы в открытых источниках\hfill}\Члены экспертной комиссии (руководитель-эксперт):\$\underset{\text{(должность, подпись, инициалы)}}{\rule{\textwidth}{0.25pt}}$\$\underset{\text{(должность, подпись, инициалы)}}{\rule{\textwidth}{0.25pt}}$\$\underset{\text{(инициалы руководителя подразделения, должность, подпись)}}{\rule{\textwidth}{0.25pt}}$\\vfill
\end{document}
Комментарии (39)
antohabio
21.08.2019 17:58По-моему, подстрочный текст (под линейками) нужен только в распечатываемых бланках. Если заполняешь электронный бланк, то в нем нет необходимости.
nfw
22.08.2019 08:10Не помню, когда и где, но видел бланки, где все поля были текстовыми формами. На самом деле, вполне удобно — ввел фамилию и инициалы в одной строчке, оно автоматически заполнилось везде, где еще нужно и так далее. Сам бланк защищен от записи, случайно ничего не испортишь. Единственное, конечно, в либре это все будет работать через пень колоду.
hiddenman
22.08.2019 00:11Я однажды очень сильно заморочился и долго пытался сделать наш стандартный договор в виде двухколоночного русско-английского документа, сразу с PDF forms для заполнения/выбора нужных параметров.
Скажу честно, на простые вещи ушло ооочень много времени. Подвохи обнаруживались там, где совсем не ждали. Весь irc-канал #latex был занят решением простейших для всяких «офисных пакетов» задач.
В итоге одну задачу так и не смог победить ни один гуру: никакими дополнениями невозможно сделать двуязычный документ в две колонки, с синхронизированными по размеру (высоте) строками (англ. язык более лаконичный и 10 строк на нем выливались в 30 строк на русском), а без этого смысл двуязычности терялся (англ. ячейка могла быть на этой странице, а соответствующая ей русская совершенно на другой и даже на третьей).
Вот такие дела. Так что сделал отдельные документы, долго мы ими пользовались, было красиво. Но больше я этим заниматься никогда в жизни не буду, слишком долгий и кропотливый труд для привычных уже всем вещей, к сожалению.embden
22.08.2019 12:34Мне кажется, тут как раз нужно было бы расширение новое написать — получилась бы классная статья на хабр.
hiddenman
22.08.2019 12:39На это бы еще пришлось потратить уйму времени, никогда их не писал до этого. Жаль, что последние версии договоров потерялись вместе с полетевшим ноутбуком, но предыдущие лежат, надо, наверное, выложить, пригодятся людям.
embden
22.08.2019 12:50Если честно, то мне кажется, что Latex это не в последнюю очередь отличное развлечение для программиста. Многие же любят вместо 20 минут на одноразовую презентации в powerpoint убить целый день, делая то же самое, но в beamer.
hiddenman
22.08.2019 12:52Да, безусловно. Как обычно, загруженность бытом и отсутствие свободного времени сводят эти желания на ноль. Лет 20 назад я бы с удовольствием заморочился (тогда я как раз на LaTeX писал курсовые и преподы долго не хотели их принимать, так как «не по придуманному нами стандарту»)
hiddenman
22.08.2019 12:42Забыл еще сказать, что, похоже, до сих пор не существует свободной реализации популярного Times New Roman, есть только «пиратская» версия PSCyr, без нужных лигатур, с хреновым кернингом, заброшенная. Поэтому даже тут можно застрять, в попытках соблюдать надуманные стандарты.
telhin
22.08.2019 13:00Делал перевод на русский для допуска к кандидатскому экзамену года 2 назад.
ПакетParacol
с выравниванием по абзацам вполне хорошо справляется.
Если нужно, могу дать доступ к исходникам.
Результатhiddenman
22.08.2019 13:03Вижу у себя версии с: ledpar, longtable, multicols, parcolumns. Больше тогда ничего не было и ничто из этого не подошло, сколько мы не старались.
Видимо, Paracol был или малоизвестен или его еще вообще не было или чем-то тоже не подошел и мне его не посоветовали.telhin
22.08.2019 13:12И в правду, на ctan отображено, что пакет появился только в конце 2011.
hiddenman
22.08.2019 13:22Теперь понятно. Видимо, кто-то тоже устал и таки взял и написал. Я этим занимался еще в 2009 году, в 2010-11 были обновленные версии, но потерялись. Выложил только что то, что нашел, вот какие они получались (полноценно с PDF-forms только Acrobat работает, похоже, в остальных не вижу работу Javascript по автозаполнению полей): github.com/hiddenman/latexdocs/tree/master/Agreement/pdf
stripe
22.08.2019 03:16Верстал матерьялы конференции в латехе, работает офигенно. Когда у тебя под сотню эбстрактов присланных участниками, и их нужно собрать в кучу и добавить содержание и алфавитный указатель в конце. Причем в процессе это все перетасовывается временами. Как это делать в ворде непредставляю.
alt78
22.08.2019 16:17Латех это здорово: качество, git, простота. Дя внутреннего документооборота и мануалов самое то.
Но: в большинстве случаев НУЖЕН WORD. В последнем проекте, когда мы сказали заказчику что отдадим им отчеты в бумаге и пдфе, они сразу попросили ввести в договор спецпункт об отчете в ворде :)
А русских сборников по инженерной и IT тематике вообще можно по пальцам одной руки посчитать. На паре конференций подключал свой ноут — не было пдф ридера, только поверпоинт. Да, да!..
Раньше для своих дипломников настаивал, чтобы писали в латехе, потом махнул рукой — у нас это разово, крайне редко если потом ребятам пригодится.aidarchikable
22.08.2019 17:45По идее docx открытый формат и кто-то уже давно должен был написать работающий конвертер из LaTeX в docx. Думаю при должном усердии можно найти рабочий вариант.
alt78
22.08.2019 18:13Максимально рабочий вариант, который я нашел — latex2rtf. Чистый текст — всё ок, но с формулами у меня была беда. Перебрал в итоге всё :)
Вообще, по итогу остановился на LibreOffice, там латех-подобный язык для формул.
kxx
22.08.2019 21:07Тоже недавно столкнулся с проблемой конвертации технического текста на пару сотен страниц из latex в doc. Лучшее, что я нашел — GrindEQ: сохраняет формулы, ссылки на литературу, более-менее форматирование соответствует оригиналу.
aidarchikable
Можно выложить на гитхаб файл с версткой.
Писал диплом в латехе лет 7 назад. Смотрел на однокурсников свысока из-за того что не имел никаких проблем с оформлением и нормоконтролем. 2 дня потратил на вход, зато потом сэкономил кучу времени на форматировании в конце диплома. Всё ещё не понимаю почему документооборот не вести в латехе вместо ворда. Порог входа не сильно высокий, а профит при этом колоссальный.
arch1tect0r
Ну потому, что у некоторых преподавателей(и не только преподавателей), чтобы работать с какой-то программой есть тетрадка, где схемой написано куда и что тыкать, чтобы работало.
А форматить в латехе, где нет кнопок — это будет непосильно для таких людей.
Другое дело тёплый ламповый MSOffice 2003 )
QuickJoey
когда в тёплом-ламповом ворде человек напишет 4-х этажные формулы, а потом попробует их поменять, а потом немножко она повиснет на границе страниц, он выучит латех с удовольствием.
arch1tect0r
Мы в универе «верстали», если так это можно назвать, методички и книжки по 200+ страниц в ворде с формулами и прочими плюхами. В ряде случаев ворд после определённого количества страниц/формул начинал превращать формулы в картинки после сохранения (а формул было очень много). И всем было пофиг… Так что не соглашусь )
QuickJoey
Я тоже в универе сверстал учебник по физике высоких энергий, который изначально был отпечатан на ротапринте с формулами написанными от руки. В LaTeX'е, быстро, с красивейшими формулами, ссылками на них, которые точно не уплывут, и, естественно возможностью издать это на любом формате от А0 до A5 без переделок.
А ощущение от большого научного текста в ворде — карточный домик, не дай бог что-то тронуть, поменять поля у бумаги, разъедется всё.
svk28
Да потому, что учиться не хотят. Да и оно не нужно порой, проще в ворде накорябать. Надысь тут сподобил контору на перенос базы знаний в wiki, так и то пищат. А markdown-то вообще простой, не в поимер латех.
Kanut
Порог входа не высокий для тех кто привык работать с кодом в том иои ином виде. Когда писал свой диплом, то делал это тоже на латехе. Точно так же пару дней потратил чтобы разобраться, потом всё очень быстро сделал. Был горд собой до невозможности.
Потом попытался жену, тогда ещё девушку, на это дело подсадить, но у неё вообще не пошло.
Кончилось тем что мы на спор верстали текст: я в латехе, она в ворде. И меня разбили в пух и прах…
worldmind
Будущая жена, по моей наводке, оформляла диплом в LaTeX — разборалась считай без моего участия.
Kanut
Вполне могу себе представить. Я скорее о том что сам факт того что кому-то было просто разобраться в латехе не означает что абсолютно всем это будет просто.
П.С. И кстати вспомнил ещё одну вещь, которая тогда была сильным преимущeством ворда: а именно возможность делать в документе корректуры/ремарки. То есть моя жена отправляла свои документы по почте доценту, он писал свои комментарии в виде примечаний и отсылал ей обратно. Мне мои латех-документы приходилось для этого распечатывать и отдавать в бумажном виде.
TheGodfather
В PDF же есть точно такие же комментарии
Kanut
Не уверен что тогда это уже тоже было доступно. Кроме того получается чтобы заменить ворд латехом уже надо ещё один дополнительный тул. И сколько таких «тулов» понадобится для других ситуаций?
Это я к тому что латех вещь хорошая и скажем формулы оформлять в нём намного удобнее чем в ворде. Но заменить ворд для широкой массы он вряд ли сможет. Тут скорее надо смотреть на вещи вроде Open Office.
telhin
Дистрибутив Латеха содержит штук 500 специализированных программ с идеологией Unix way. Плюс внешние редакторы, словари и инструменты для проверки языка (Language tool). И еще внешний git для версионирования. Добавление инструмента для просмотра PDF в эту кучу выглядит не так уж страшно.
Вообще все окружение нормально ложится в Portable версии на флешку в 8 Гб.
worldmind
Ну это уже gitlab какой надо использовать, тоже вобщем-то ничего сложного.
Kanut
Когда я писал свою дипломную гитлаба наверное ещё и в проекте не было :)
П.С. И опять же мы возвращаемся к «проблеме» дополнительных инструментов.
ilya_pu
ну, предположим, что и в лайтехе можно комментировать всё что хочешь — безо всяких pdf… вставляй себе комментарии в текстовый файл…
в своё время столкнулся с проблемой, практически нерешаемой на уровне организации: внутренние стандарты оформления документов могут быть крайне неудобны для того, чтобы перевести их в лайтех. принцип бюрократии — пусть безобразно, зато единообразно, а лайтех изначально заточен под красивый, качественный дизайн страницы, и чтобы сделать «как в Ворде», приходится всё уродовать, перенастраивать вручную, что сложнее, чем просто состряпать доковский файл. и когда начинаешь всем этим заниматься, понимаешь, что можно, но — зачем? как говорил Саша Черный, «им спора не решить… а жаль! ведь можно наливать… вино в хрусталь!»
Kanut
Извините, но такое «комметирование» всё таки заметно уступает вордовскому аналогу по удобству и функциональности :)
Красивый и качественный дизайн понятие очень субъективное и каждый понимает под этим что-то своё.
Разница скорее в том что ворд разрабатывался в первую очередь для работы в офисах, а латех для написания научных работ.
Dreadd
В этом году писал диплом, РГУнГ Москва. Технический, 80+ формул, таблицы и прочее. Тоже делал в латехе, преподаватели были в восторге — оформление шик, формулы смотрятся прекрасно, отступы, переносы — все супер. Сделал больше половины. А потом этому пришел конец потому что «на антиплагиат принимается только редактируемая копия в формате docx», которая должна так же в обязательно сдаваться на диске и все такое. И да, на печать должна быть выведена именно та версия которая прошла антиплагиат. Хорошо что пандок большей частью сконвертил формулы. Итого — все выигранное время ушло на борьбу с вордом, его единым файлом, беспомощными стилями, неюзабельной автонумерацией и так далее. Единственное что мне было делать легче в ворд — таблицы со сложной структурой.
einhander
Так антиплагиат спокойно принимает pdf, у нас в этом году принимают только pdf. Вуз технический, про латех даже и не слышали.
Dreadd
Вот, мне тоже так казалось что должен понимать пдф. Но разговаривать на эту тему со мной даже не стали, и показать регламент проверки с требованиями к документу тоже не смогли. А на вопрос почему я должен для написания обязательно иметь у себя в наличии дорогой коммерческий продукт
разработанный потенциальным противником страны вообще и отрасли в частностимне сообщили что конечно не должен — дело сугубо добровольное, если не хочется то можно диплом и не писать, никто не заставляет :)