文本和图形的表格对齐

文本和图形的表格对齐

对于我正在准备的一份试卷,我想正确地构建一个首页标题,其中包含大学徽标和两个并排的文本块(用于课程、部门等)。我已经看到了一些可能的解决方案:

如何使单元格文本垂直居中?

如何将文本和图像垂直居中放置在表格的同一行中

但没有一个能为我的情况提供合适的解决方案。我希望能够将两个文本分别与t、垂直对齐cb并将图片与第一个文本对齐。问题在于后一种对齐方式,因为它应该足够灵活,以便图形和第一个文本可以在tc、处对齐b

需要明确的是,可能的输出包括:

  • 图片与第一个文本居中对齐,最后一个文本与第一个文本顶部对齐;或者
  • 全部在顶部、底部、中心对齐;甚至
  • 图片与第一个文本顶部对齐,最后一个文本与第一个文本底部对齐。

在此处输入图片描述

\documentclass[10pt]{scrartcl}

\usepackage{lmodern}
\usepackage[a4paper,showframe]{geometry}
\usepackage{graphicx}
\DeclareGraphicsExtensions{.pdf}

\usepackage{array}

\usepackage{varwidth}
\usepackage{ragged2e}

\setlength{\fboxsep}{0pt}

\newcommand*{\mtab}[1]{\begin{tabular}[t]{@{}l@{}} #1 \end{tabular}}
\newcommand*{\lbox}[2][t]{\parbox[#1]{\linewidth}{\RaggedRight\fbox{\mtab{#2}}}}
\newcommand*{\rbox}[2][t]{\parbox[#1]{\linewidth}{\RaggedLeft\fbox{\mtab{#2}}}}
\newcommand*{\cbox}[2][t]{\parbox[#1]{\linewidth}{\Centering\fbox{\mtab{#2}}}}

\newcommand*{\Logo}{\includegraphics[width=\linewidth]{example-image}}

\begin{document}

\begingroup
\noindent
\begin{tabular}{@{}p{0.15\textwidth}p{0.5\textwidth}p{\dimexpr 0.35\textwidth-4\tabcolsep\relax}@{}}
\lbox{\raisebox{-0.5\height}{\Logo}} & \cbox[t]{aaa\\ bbb\\ ccc\\ ddd} & \rbox[t]{fff\\ hhh}
\end{tabular}
\endgroup
\par\bigskip
\begingroup
\noindent
\begin{tabular}{@{}p{0.6\textwidth}@{}p{0.2\textwidth}@{}p{0.2\textwidth}@{}}
Name: & Num: & Class:
\end{tabular}
\endgroup
\par\bigskip

Normal text here!

\end{document}

答案1

我不太明白你的定义。不需要 parbox 定义

然而,使用时\raisebox您必须考虑\strutbox图像的高度。

\documentclass[10pt]{scrartcl}

\usepackage{lmodern}
\usepackage[a4paper,showframe]{geometry}
\usepackage{graphicx}
%\DeclareGraphicsExtensions{.pdf}

\usepackage{array}

\usepackage{varwidth}
\usepackage{ragged2e}

\setlength{\fboxsep}{0pt}

\newcommand*{\mtab}[1]{\begin{tabular}[t]{@{}l@{}} #1 \end{tabular}}
\newcommand*{\lbox}[2][t]{\parbox[#1]{\linewidth}{\RaggedRight\fbox{\mtab{#2}}}}
\newcommand*{\rbox}[2][t]{\parbox[#1]{\linewidth}{\RaggedLeft\fbox{\mtab{#2}}}}
\newcommand*{\cbox}[2][t]{\parbox[#1]{\linewidth}{\Centering\fbox{\mtab{#2}}}}

\newcommand*{\Logo}{\includegraphics[width=\linewidth]{example-image}}

\begin{document}

\begingroup
\noindent
\begin{tabular}{@{}>{\RaggedRight}p{0.15\textwidth}>{\Centering}p{0.5\textwidth}>{\RaggedLeft}p{\dimexpr 0.35\textwidth-4\tabcolsep\relax}@{}}
\raisebox{\dimexpr-\height+\ht\strutbox+\fboxrule}{\Logo} &\fbox{\mtab{aaa\\ bbb\\ ccc\\ ddd}} & \fbox{\mtab{fff\\ hhh}}
\end{tabular}
\endgroup
\par\bigskip
\begingroup
\noindent
\begin{tabular}{@{}p{0.6\textwidth}@{}p{0.2\textwidth}@{}p{0.2\textwidth}@{}}
Name: & Num: & Class:
\end{tabular}
\endgroup
\par\bigskip

Normal text here!

\end{document}

在此处输入图片描述

相关内容