Несколько полезных приемов для любителей 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
Всё вместе
Готовый бланк можно скачать здесь, а на обновляющиеся исходники поглазеть здесь