使用 overpic 将文本置于图像中心

使用 overpic 将文本置于图像中心

我想使用(理想情况下)overpic 将一些文本放在非正方形图像的中心。我尝试过:

\begin{figure}[h!]
\centering
    \begin{overpic}[width=0.3\textwidth]{example-image}
        \put(50,50){\makebox[0pt]{text}}
    \end{overpic}
\end{figure}

但是,这只会在水平方向上将“文本”居中。在垂直方向上,文本会略微位于中心上方,因为单位会根据较长的边(在本例中为宽度)进行归一化。有没有办法将一些文本放在实际中心,而无需手动输入图像高度?

在此处输入图片描述

答案1

这使用保存框来测量图像的大小。请注意,\huge位于其之前\strutbox的是字体大小相关的。此外,\dp\tempbox=0pt和可以忽略。

\documentclass{article}
\usepackage{xcolor}
\usepackage{graphicx}
\usepackage{showframe}% alignment tool

\newsavebox{\tempbox}

\begin{document}
Test above.

\begin{figure}[ht]
\savebox\tempbox{\includegraphics[width=0.3\textwidth]{example-image}}%
\centering
  \usebox\tempbox
  \llap{\huge\raisebox{\dimexpr 0.5\ht\tempbox-0.5\ht\strutbox+0.5\dp\strutbox}%
    {\makebox[\wd\tempbox]{\textcolor{red}{text}}}}
\end{figure}

Text below.
\end{document}

答案2

无上图:

姆韦

\documentclass[twocolumn]{article}
\usepackage{graphicx,xcolor}
\usepackage[export]{adjustbox}
\begin{document}
{\centering
\makebox[0pt]{\includegraphics[valign=c,width=0.3\textwidth]{example-image.png}}\Huge\bfseries\raisebox{-0.5ex}{\makebox[0pt]{\color{yellow}text}}\par}
\end{document}

相关内容