Практические советы по верстке бланков заявлений в ЛаТеХе

от автора

Несколько полезных приемов для любителей LaTeX’а, желающих сверстать бланк какого-нибудь заявления. Будем для примера верстать форму претензии к Почте России (её «официальный» вариант можно, если повезёт, скачать с сайта Почты России). Всю верстку от первой и до последней буквы объяснять не будем, предполагая, что читатель с основами ЛаТеХа знаком. Рассмотрим специфические рецепты верстки «линеек» где нужно вписать пропущенные слова, чекбоксов с метками, подписей мелким шрифтом снизу текста и линий разной толщины и прерывистости.

Разумеется, рецепты не единственно возможные и наверняка чем-нибудь да неправильные. Если знаете, как готовить лучше, милости просим в комментарии.

Адресат заявления

Как правило, всякие заявления начинаются с нескольких строк в правом верхнем углу, где вписывается адресат и податель заявления. Этот блок должен быть прижат вправо, в самом блоке выравнивание по левому краю и в каждой строке обычно есть несколько слов в начале, после чего идет линия до конца. Иногда посередине линии тоже бывают слова.

Простейший код, делающий желаемое, выглядит так:

\begin{flushright} % сдвигает содержимое окружения вправо \begin{tabular}{p{.5\textwidth}} % делает таблицу из одной колонки шириной в половину текста Кому \hrulefill \\ % \hrulefill делает линию до конца строки от \hrulefill \end{tabular} \end{flushright} 

Мы его немного модифицируем, чтобы окружения flushright, tabular и макрос \hrulefill вставлялись автоматически. Для этого определим новое окружение lines:

\newenvironment{lines}[1][\textwidth] % по умолчанию линейки на всю ширину текста { \newcolumntype{E}{>{}p{#1}<{\hrulefill}} % в конце нашего столбца будет приписываться \hrulefill \begin{flushright} % автоматически вставим flushright \begin{tabular}[h]{E} % и tabular нужного формата } {\end{tabular}\end{flushright} } 

использовать его можно так:

\begin{lines}[.5\textwidth]   Кому \\   от\\   проживающего\\   \\   тел.\\   документ, удостоверяющий личность\\   серия \rule{2cm}{0.25pt} № \\  % \rule сделает линейку указанной длины и толщины   выдан \end{lines} 

Поля для галочек

Обвести что-то рамочкой можно макросом \fbox, а вот как сделать пустой бокс нужного размера, скажем, 3 миллиметра? Способов наверняка много. Можно воспользоваться окружением minipage, которое позволяет указать ширину и высоту: \begin{minipage}[c][0.3cm]{0.3cm}\quad\end{minipage}, а можно и низкоуровневыми командами \vbox и \hbox: \vbox to 3mm {\vfil \hbox to 3mm{} \vfil}. В любом случае, писать каждый раз столько кода не хочется, поэтому давайте сделаем новую команду \chkbox и будем передавать ей аргументом текст, который надо поместить рядом с чекбоксом.

% \: сделает пробел между квадратиком и текстом,  % а \parbox сделает параграф нужной ширины, чтобы в тексте можно было использовать переносы строк % не забудьте включить пакет calc для арифметического действия с длинами \newcommand\chkbox[1]{\fbox{\begin{minipage}[c][0.3cm]{0.3cm}\quad\end{minipage}}\:\parbox[t]{\linewidth - 0.3cm}{#1}  } 

Разместим квадратики на странице при помощи таблицы:

\begin{tabular}{p{.17\textwidth}p{.25\textwidth}p{.25\textwidth}p{.3\textwidth}} % отрегулируйте ширину колонок по вкусу \chkbox{авиа} & \chkbox{уведомление о\\ вручении} & \chkbox{наложенный платеж} & \parbox[t]{.3\textwidth}{сумма наложенного\\ платежа \hrulefill} \\  \end{tabular} 

Текст под линией

Сделать подчеркнутый текст несложно, а вот как сделать «надчеркнутый», например, написать мелким шрифтом «Фамилия И.О.» под полем для ФИО? Один из способов — воспользоваться макросом \underset из пакета amsmath:

% текст "должность, фамилия и подпись должностного лица" под пустой линейкой шириной в полстраницы $\underset{\text{(должность, фамилия и подпись должностного лица)}}{\underline{\hspace{0.5\textwidth}}}$ 

Линии

Наконец, часто бывают нужны линии на всю страницу. В верстаемом примере требуется прерывистая линия, отделяющая отрывной талон, а иногда в заявлениях или обращениях линиями отделяют «фирменную» шапку от остального текста (как, например, в письме на картинке справа). Прерывистую линию можно сделать при помощи макроса \hdashrule из пакета dashrule:

% линейка шириной во всю страницу толщиной 1 пункт, опущенная на 2 миллиметра относительно базовой линии,  % с шаблоном "штрих 3 миллиметра пробел 1 миллиметр" \hdashrule[-2mm]{\textwidth}{1pt}{3mm 1mm} 

Сплошные линии можно сделать командой \rule, у которой такой же синтаксис, за исключением отсутствия последнего аргумента (шаблона линии). Две сплошные линии разной толщины сделать несложно:

\rule{\textwidth}{.5mm} \rule{\textwidth}{.25mm} 

но расстояние между ними получается слишком большим. Можно поиграться со сдвигом линеек, но проще воспользоваться командами \hrule и установкой кернинга:

\hrule height 1pt\kern 2pt \hrule height 0.25pt 
Всё вместе

Готовый бланк можно скачать здесь, а на обновляющиеся исходники поглазеть здесь

ссылка на оригинал статьи http://habrahabr.ru/post/207364/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *