垂直对齐文本和图像的中心

垂直对齐文本和图像的中心

我正在尝试对齐不同大小的文本和内联图像。我希望文本居中对齐,但我不知道该怎么做。

下面是一些尝试的简单示例:

在此处输入图片描述

以下是生成该图像的代码:

\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=mvalign=M前者将包括降部深度以计算中心,后者将以字母的一般基线为参考。您可以尝试哪种更适合您的需求。

我自己更喜欢M选择。在我看来更好 ;)

希望能帮助到你。

相关内容