...

четверг, 26 декабря 2013 г.

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

Несколько полезных приемов для любителей 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


Всё вместе



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

This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at fivefilters.org/content-only/faq.php#publishers.


Комментариев нет:

Отправить комментарий