Несколько полезных приемов для любителей LaTeX'а, желающих сверстать бланк какого-нибудь заявления. Будем для примера верстать форму претензии к Почте России (её «официальный» вариант можно, если повезёт, скачать с сайта Почты России). Всю верстку от первой и до последней буквы объяснять не будем, предполагая, что читатель с основами ЛаТеХа знаком. Рассмотрим специфические рецепты верстки «линеек» где нужно вписать пропущенные слова, чекбоксов с метками, подписей мелким шрифтом снизу текста и линий разной толщины и прерывистости.
Разумеется, рецепты не единственно возможные и наверняка чем-нибудь да неправильные. Если знаете, как готовить лучше, милости просим в комментарии.
Адресат заявления
Как правило, всякие заявления начинаются с нескольких строк в правом верхнем углу, где вписывается адресат и податель заявления. Этот блок должен быть прижат вправо, в самом блоке выравнивание по левому краю и в каждой строке обычно есть несколько слов в начале, после чего идет линия до конца. Иногда посередине линии тоже бывают слова.
Простейший код, делающий желаемое, выглядит так:
begin{flushright} % сдвигает содержимое окружения вправо
begin{tabular}{p{.5textwidth}} % делает таблицу из одной колонки шириной в половину текста
Кому 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}[.5textwidth]
Кому \
от\
проживающего\
\
тел.\
документ, удостоверяющий личность\
серия rule{2cm}{0.25pt} № \ % rule сделает линейку указанной длины и толщины
выдан
end{lines}
Поля для галочек
Обвести что-то рамочкой можно макросом fbox
, а вот как сделать пустой бокс нужного размера, скажем, 3 миллиметра? Способов наверняка много. Можно воспользоваться окружением minipage
, которое позволяет указать ширину и высоту: begin{minipage}[c][0.3cm]{0.3cm}quadend{minipage}
, а можно и низкоуровневыми командами vbox
и hbox: vbox to 3mm {vfil hbox to 3mm{} vfil}
. В любом случае, писать каждый раз столько кода не хочется, поэтому давайте сделаем новую команду chkbox и будем передавать ей аргументом текст, который надо поместить рядом с чекбоксом.
% : сделает пробел между квадратиком и текстом,
% а parbox сделает параграф нужной ширины, чтобы в тексте можно было использовать переносы строк
% не забудьте включить пакет calc для арифметического действия с длинами
newcommandchkbox[1]{fbox{begin{minipage}[c][0.3cm]{0.3cm}quadend{minipage}}:parbox[t]{linewidth - 0.3cm}{#1}
}
Разместим квадратики на странице при помощи таблицы:
begin{tabular}{p{.17textwidth}p{.25textwidth}p{.25textwidth}p{.3textwidth}} % отрегулируйте ширину колонок по вкусу
chkbox{авиа} & chkbox{уведомление о\ вручении} & chkbox{наложенный платеж} & parbox[t]{.3textwidth}{сумма наложенного\ платежа hrulefill} \
end{tabular}
Текст под линией
Сделать подчеркнутый текст несложно, а вот как сделать «надчеркнутый», например, написать мелким шрифтом «Фамилия И.О.» под полем для ФИО? Один из способов — воспользоваться макросом underset
из пакета amsmath
:
% текст "должность, фамилия и подпись должностного лица" под пустой линейкой шириной в полстраницы
$underset{text{(должность, фамилия и подпись должностного лица)}}{underline{hspace{0.5textwidth}}}$
Линии
Наконец, часто бывают нужны линии на всю страницу. В верстаемом примере требуется прерывистая линия, отделяющая отрывной талон, а иногда в заявлениях или обращениях линиями отделяют «фирменную» шапку от остального текста (как, например, в письме на картинке справа). Прерывистую линию можно сделать при помощи макроса hdashrule
из пакета dashrule
:
% линейка шириной во всю страницу толщиной 1 пункт, опущенная на 2 миллиметра относительно базовой линии,
% с шаблоном "штрих 3 миллиметра пробел 1 миллиметр"
hdashrule[-2mm]{textwidth}{1pt}{3mm 1mm}
Сплошные линии можно сделать командой rule
, у которой такой же синтаксис, за исключением отсутствия последнего аргумента (шаблона линии). Две сплошные линии разной толщины сделать несложно:
rule{textwidth}{.5mm}
rule{textwidth}{.25mm}
но расстояние между ними получается слишком большим. Можно поиграться со сдвигом линеек, но проще воспользоваться командами hrule
и установкой кернинга:
hrule height 1ptkern 2pt hrule height 0.25pt
Всё вместе
Готовый бланк можно скачать здесь, а на обновляющиеся исходники поглазеть здесь
Автор: dbarashev