使用 overpic 将文本置于特定位置的中心

使用 overpic 将文本置于特定位置的中心

我使用 overpic 包将文本放在图形内。对于在命令中使用换行符,put我使用parbox(参见示例代码)。

\documentclass{article}
\usepackage{graphicx}
\usepackage[percent]{overpic}

\begin{document}

\begin{figure}[h!]
\centering
\begin{overpic}[width=0.3\textwidth]{example-image}
\put(56,47){\parbox{10cm}{some\newline too long text}}
\end{overpic}
\end{figure}

\end{document}

使用此代码,文本将在put命令的指定位置左对齐。我如何才能将文本居中在命令中的指定位置,put以便在示例代码中“some”应该出现在“long”上方的某个位置?请注意,使用centering将文本居中在图形中间,这不是我想要的。

答案1

您的问题似乎包含两个部分:

  1. 将各行文本相对居中,并

  2. 将文本块相对于\put位置居中。

对于#1,我选择使用堆栈,这对#2 也有帮助,其中我将堆栈放在零宽度中\makebox

在 MWE 中,我也在同一个位置放置了一个红点,这样我们就可以看到这些\puts 以该点为中心\put

\documentclass{article}
\usepackage{graphicx,xcolor}
\usepackage[usestackEOL]{stackengine}
\usepackage[percent]{overpic}

\begin{document}

\begin{figure}[h!]
\centering
\begin{overpic}[width=0.3\textwidth]{example-image}
\put(56,47){\makebox[0pt]{\Centerstack{some\\ too long text}}}
\put(56,47){\makebox[0pt]{\Huge\textcolor{red}{.}}}
\end{overpic}
\end{figure}

\end{document}

enter image description here

我可能还会建议使用\stackinset而不是overpic。 水平对齐lcr(参数 1)和垂直对齐tcb(参数 3)不仅指示在背景图像上将哪里用作对齐参考,还指示在插图上将哪里用作参考。因此,c对这两者使用 可以保证插图的中心相对于图像的中心放置在提供的偏移量处。

\documentclass{article}
\usepackage{graphicx,xcolor}
\usepackage[usestackEOL]{stackengine}
\usepackage[percent]{overpic}
\begin{document}
\begin{figure}[h!]
\centering
\stackinset{c}{6pt}{c}{12pt}{\Centerstack{some\\too long text}}
{\includegraphics[width=0.3\textwidth]{example-image}}
\end{figure}
\end{document}

enter image description here

答案2

简单与复杂。简单是用tabular,复杂是用varwidth

项目符号只是为了显示参考点。

\documentclass{article}
\usepackage{varwidth}
\usepackage{graphicx}
\usepackage[percent]{overpic}

\begin{document}

\begin{overpic}[width=0.3\textwidth]{example-image}
\put(56,47){\begin{tabular}{@{}c@{}}some\\too long text\end{tabular}}
\put(56,47){\textbullet}
\end{overpic}

\bigskip

\begin{overpic}[width=0.3\textwidth]{example-image}
\put(56,47){\begin{varwidth}{10cm}\centering some\\too long text\end{varwidth}}
\put(56,47){\textbullet}
\end{overpic}

\end{document}

enter image description here

为了使给定的坐标成为添加文本的中心,将其括在\makebox(0,0){...}

\documentclass{article}
\usepackage{varwidth}
\usepackage{graphicx}
\usepackage[percent]{overpic}

\begin{document}

\begin{overpic}[width=0.3\textwidth]{example-image}
\put(56,47){\makebox(0,0){\begin{tabular}{@{}c@{}}some\\too long text\end{tabular}}}
\put(56,47){\makebox(0,0){\textbullet}}
\end{overpic}

\bigskip

\begin{overpic}[width=0.3\textwidth]{example-image}
\put(56,47){\makebox(0,0){\begin{varwidth}{10cm}\centering some\\too long text\end{varwidth}}}
\put(56,47){\makebox(0,0){\textbullet}}
\end{overpic}

\end{document}

enter image description here

相关内容