我正在尝试对齐不同大小的文本和内联图像。我希望文本居中对齐,但我不知道该怎么做。
下面是一些尝试的简单示例:
以下是生成该图像的代码:
\documentclass{article}
\usepackage{graphicx}
\usepackage{array} % for tabular m{...}
\begin{document}
\begin{center}
\Huge LEFT \normalsize
\includegraphics[width=4em]{example-image-a}
RIGHT
\end{center}
\begin{center}
\setlength{\tabcolsep}{1ex}
\begin{tabular}[c]{r c l}
\Huge LEFT &
\includegraphics[width=4em]{example-image-b} &
RIGHT
\end{tabular}
\end{center}
\begin{center}
\Huge LEFT \normalsize
\raisebox{-0.75em}{\includegraphics[width=4em]{example-image-c}}
\raisebox{0.4em}{RIGHT}
\end{center}
\begin{center}
\setlength{\tabcolsep}{1ex}
\begin{tabular}{ m{0.3\textwidth} m{4em} m{0.3\textwidth} }
\raggedleft \Huge LEFT &
\includegraphics[width=4em]{example-image-a} &
\raggedright RIGHT
\end{tabular}
\end{center}
\end{document}
答案1
您可以编写一个文本包装器来包装\vcenter
原始内容(这基本上也是adjustbox
内部执行的操作)。带星号的表格会忽略内容的深度。
\documentclass{article}
\usepackage{graphicx}
\makeatletter
\newcommand*{\textvcenter}{\@ifstar{\@tempswatrue\text@vcenter}{\@tempswafalse\text@vcenter}}
\newcommand*{\text@vcenter}[1]{\mbox{$\m@th\vcenter{\setbox\z@=\hbox{#1}\if@tempswa\dp\z@\z@\fi\box\z@}$}}
% to show the axis height in the snapshot
\newcommand*{\showmathaxis}{%
\setbox\z@=\hbox{$a$}%
\@tempdima\fontdimen22\textfont2\relax
\@tempdimb\@tempdima
\advance\@tempdima.2\p@
\advance\@tempdimb-.2\p@
\leavevmode\rlap{\vrule height\@tempdima depth-\@tempdimb width10cm}%
}
\makeatother
\begin{document}
\begin{center}
\showmathaxis
\textvcenter{\Huge LEFT }%
\textvcenter{\includegraphics[width=4em]{example-image-a}}
\textvcenter{RIGHT}
\textvcenter{qypgjtl}
\textvcenter*{qypgjtl}
\end{center}
\end{document}
答案2
您可以使用该adjustbox
包:
\documentclass{article}
\usepackage[showframe]{geometry}
\RequirePackage{atbegshi,picture}
\AtBeginShipout{%
\AtBeginShipoutUpperLeft{%
\put(\dimexpr 1in+\oddsidemargin+.5\textwidth\relax,-\paperheight\relax){%
\line(0,1){\paperheight}%
}%
}%
}
\usepackage{graphicx}
\usepackage[export]{adjustbox}
\begin{document}
\vspace*{1em}
\begin{center}
\fbox{\adjustbox{valign=m}{\Huge LEFT} \includegraphics[width=4em,valign=m]{example-image-b} \adjustbox{valign=m}{RIGHT}}
\end{center}
\end{document}
我仅使用了\vspace
和\fbox
来说明文本是垂直和水平居中的。只需将其保留在文档中即可。另外,我在文本区域的中间添加了一条垂直线以进行定位。
但说实话,仅仅为了将三个不同的单词/图像居中就需要输入很多内容。也许你可以将其包装成一个新命令。
编辑
正如 John Kamylo 指出的那样,使用带有降部的小写字母(如 g、y 或 p)时会有所不同。可以用 代替valign=m
。valign=M
前者将包括降部深度以计算中心,后者将以字母的一般基线为参考。您可以尝试哪种更适合您的需求。
我自己更喜欢M
选择。在我看来更好 ;)
希望能帮助到你。