Изображение выше — это то, что я хочу воспроизвести: я хочу, чтобы имя отображалось вверху слева, а адрес/идентификатор электронной почты — вверху справа, и я хочу, чтобы оба они были выровнены с основным текстом.
Ниже представлена моя попытка сделать это (текст бла-бла-бла здесь для того, чтобы продемонстрировать проблему выравнивания) -
\documentclass[a4paper,10pt]{article}
\usepackage{a4wide}
\usepackage{color}
\usepackage{xcolor,mdframed}
\usepackage[hmargin=1cm,vmargin=1.5cm]{geometry}
\begin{document}
\begin{tabular*}{\textwidth}{@{\extracolsep{\fill} } l r }
\huge{\textbf{John Doe}} & Qtr D/40, Unit 12, Upper Kolkata\\
& (011) 2040-3455 [email protected]\\
\end{tabular*}
\bigskip
\begin{minipage}[c]{0.3\linewidth}
\begin{mdframed}[backgroundcolor=gray!10]
\bigskip
blah blah blah blah blah blah blah blah blah \
blah blah blah blah blah blah blah blah blah blah blah blah \
\bigskip
\end{mdframed}
\end{minipage}
\begin{minipage}[c]{0.2\linewidth}
\end{minipage}
\begin{minipage}[c]{0.6\linewidth}
blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah
blah blah blah blah blah blah blah blah blah blah blah blah blah blah
blah blah blah
\end{minipage}
\end{document}
И вот что я из этого получаю -
Как можно заметить, текст адреса/идентификатора электронной почты справа выходит за пределы текстового поля остального документа.
Как это исправить? Также, хорошая ли идея использовать таблицы для такого вида макета? Какая хорошая альтернатива?
Заранее спасибо.
решение1
Я бы посоветовал избегать явной разметки, так как она утомительна и подвержена ошибкам.
Моя реализация заголовка использует tabular*
две вложенные tabular
среды, которые обеспечивают вертикальное центрирование, как в оригинале.
Для персональных данных я предлагаю data
среду, содержащую как левую, так и правую часть, каждая из которых имеет префикс в виде соответствующей команды. Ширина правой части вычисляется один раз и навсегда в начале документа, а ширина левой части вычисляется соответственно, оставляя некоторое предопределенное пространство (здесь два em).
\documentclass[a4paper,10pt]{article}
\usepackage[hmargin=1cm,vmargin=1.5cm,showframe]{geometry}
\usepackage{color}
\usepackage{xcolor,mdframed}
\newsavebox{\databox}
\newlength{\datawidth}
\AtBeginDocument{
\sbox{\databox}{%
\leftpart Mock text
\end{mdframed}\end{minipage}}
\setlength{\datawidth}{\wd\databox}
}
\newenvironment{data}
{\noindent\ignorespaces}
{\end{minipage}\par}
\newcommand{\leftpart}{%
\begin{minipage}{.3\textwidth}
\begin{mdframed}[
backgroundcolor=gray!10,
innertopmargin=\bigskipamount,
innerbottommargin=\bigskipamount]}
\newcommand{\rightpart}{%
\end{mdframed}
\end{minipage}\hfill
\begin{minipage}{\dimexpr\textwidth-2\tabcolsep-\datawidth}}
\begin{document}
\noindent%%% remember this
\begin{tabular*}{\textwidth}{@{\extracolsep{\fill} } l r@{}}
\begin{tabular}{@{}l@{}}
\huge\bfseries John Doe
\end{tabular}
&
\begin{tabular}{@{}l@{}}
Qtr D/40, Unit 12, Upper Kolkata\\
(011) 2040-3455 [email protected]
\end{tabular}
\end{tabular*}
\bigskip
\begin{data}
\leftpart
blah blah blah blah blah blah blah blah blah
blah blah blah blah blah blah blah blah blah blah blah blah
\rightpart
blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah
blah blah blah blah blah blah blah blah blah blah blah blah blah blah
blah blah blah
\end{data}
\end{document}
showframe
Конечно, эта опция только для этого примера. Никогда не используйте устаревший a4wide
пакет.