Выравнивание заполненных полей для ФИО и подписи с подстрочным текстом

Оформляю титульный лист к дипломной работе. Там присутствуют графы с подписями и ФИО. Проблема стала в их выравнивании относительно друг друга.

Минимальный код:

\documentclass[fontsize=14bp,a4paper]{scrreprt}

% Подключение пакетов
\usepackage[utf8]{inputenc}  % Кодировка исходного текста
\usepackage{polyglossia}    %для русского языка
\usepackage[T2A]{fontenc}   %внутренняя кодировка
\usepackage[left=25mm, right=15mm, top=20mm, bottom=20mm, footskip=10mm]{geometry} %задаёт поля документа
\usepackage{amsmath} %пакет мат. формул
\usepackage[normalem]{ulem} %пакет для подчёркиваний


% Установка параметров для документа
\setdefaultlanguage[forceheadingpunctuation=false]{russian}  %% устанавливает главный язык документа, опция - убирает последнюю точку в нумерации заголовков
\setotherlanguage{english} %% объявляет второй язык документа
\setmainfont{Liberation Serif}

\begin{document}
    \noindent Обучающийся \hfill $\underset{\text{подпись}}{\underline{\hspace{3cm}}}$ \hfill $\underset{\text{инициалы и фамилия}}{\uline{\text{А.Б. Славный}}}$
    
    \noindent Руководитель \hfill $\underset{\text{подпись}}{\underline{\hspace{3cm}}}$ \hfill $\underset{\text{инициалы и фамилия}}{\uline{\text{В.Г. Достопочтенный}}}$
    
    \noindent Ответственный \\ за нормоконтроль \hfill $\underset{\text{подпись}}{\underline{\hspace{3cm}}}$ \hfill $\underset{\text{инициалы и фамилия}}{\uline{\text{Д.Е. Уважаемый}}}$
\end{document}

Даёт такой результат: результат кода

Как видно - подписи и ФИО расположены не очень ровно. Пробовал оформить через tabular - всё равно остаётся проблема с ФИО из-за разных длин строк + выравнивание таблицы по ширине страницы - та ещё задача.

Хочу добиться вот такого результата, но не знаю, как (тут нет полей с подписями, но в моём случае их надо сделать):

чужая работа с известного текстового процессора

Дистрибутив: TeXLive

Компилятор: XeLaTeX


Ответы (1 шт):

Автор решения: Vladimir

Я сделал как пример два возможных варианта: через таблицу (необходим пакет tabularx) и с помощью TikZ (для этого варианта необходим пакет tikz). Лично мне через Tikz больше нравится, так как с его помощью можно сделать макрос. Но если попадется длинная фамилия, то надо будет пересчитывать размеры полей для нее. Этот момент можно было слегка автоматизировать, но во-первых, для трех фамилий это не стоит возни - проще руками подобрать размеры по ситуации, во-вторых, придется добавлять какие-то глобальные длины (чтобы хранить максимальную длину фамилий). В общем, первый вариант с таблицей использует столбец формата X с автоматическим вычислением ширины по размерам других столбцов и ширине всей таблицы и при этом таблицу можно растянуть на заданную ширину (собственно, эти возможности и предоставляет пакет tabularx). И в этом случае, сложнее получить подстрочные надписи (использовал \raisebox и корректировку высоты строки \\[]. Недостаток такого подхода - все слишком громоздко выглядит.

Во втором случае, макрос гораздо проще использовать, но нужно будет корректировать длины отдельных блоков.

Строку \setdefaultlanguage[forceheadingpunctuation=false]{russian} я закомментировал, потому как мой TeXLive ее отказался принимать. Но на результат это влиять не должно. Лишние пакеты из примера тоже удалил.

\documentclass[fontsize=14bp,a4paper]{scrreprt}

% Подключение пакетов
\usepackage[utf8]{inputenc}  % Кодировка исходного текста
\usepackage{polyglossia}    %для русского языка
\usepackage[T2A]{fontenc}   %внутренняя кодировка
\usepackage[left=25mm, right=15mm, top=20mm, bottom=20mm, footskip=10mm]{geometry} %задаёт поля документа

\usepackage{tabularx}
\usepackage{tikz}

% Установка параметров для документа
%\setdefaultlanguage[forceheadingpunctuation=false]{russian}  %% устанавливает главный язык документа, опция - убирает последнюю точку в нумерации заголовков
\setdefaultlanguage[indentfirst=true]{russian}  
\setotherlanguage{english} %% объявляет второй язык документа
\setmainfont{Liberation Serif}

\newcommand{\podpis}[2]{
    \parbox[b]{4cm}{#1}
    \hspace{2.5cm}
    \tikz[baseline=2pt]{\draw(0,0) to node[below=-2pt]{\scriptsize подпись}(3.5cm,0);}
    \hspace{1.5cm}
    \tikz[baseline=2pt]{
        \def\familywidth{\textwidth-4cm-2.5cm-3.5cm-1.5cm-10pt}
        \draw(0,0) to node[below=-2pt]{\scriptsize инициалы и фамилия}(\familywidth,0);
        \node[anchor=west](f) at (5pt,7pt){#2};
    }
}


\begin{document}
    \noindent
    \begin{tabularx}{\textwidth}{p{3.8cm}p{2cm}p{3cm}p{1.5cm}X}
        Обучающийся  &  & \phantom{подпись} & & А.Б. Славный \\ \cline{3-3}\cline{5-5}
        & & \hfil\scriptsize \raisebox{5pt}{подпись}\hfil & &  \hfil\scriptsize \raisebox{5pt}{инициалы и фамилия}\hfil \\
        Руководитель &  & \phantom{подпись} & & В.Г. Достопочтенный \\ \cline{3-3}\cline{5-5}
        & & \hfil\scriptsize \raisebox{5pt}{подпись}\hfil & &  \hfil\scriptsize \raisebox{5pt}{инициалы и фамилия}\hfil \\[-10pt]
        Ответственный\endline за нормоконтроль & &  \phantom{подпись} & &    Д.Е. Уважаемый \\ \cline{3-3}\cline{5-5}        
        & & \hfil\scriptsize \raisebox{5pt}{подпись}\hfil & &  \hfil\scriptsize \raisebox{5pt}{инициалы и фамилия}\hfil \\ 
    \end{tabularx}
    
    \vskip 2cm 
   
    \noindent
    \podpis{Обучающийся}{А.Б. Славный}\\
    \podpis{Руководитель}{В.Г. Достопочтенный}\\
    \podpis{Ответственный\\за нормоконтроль}{Д.Е. Уважаемый}\\
\end{document}

Результат работы варианта с таблицей: введите сюда описание изображения

Результат работы варианта с макросом: введите сюда описание изображения

→ Ссылка