我使用 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
您的问题似乎包含两个部分:
将各行文本相对居中,并
将文本块相对于
\put
位置居中。
对于#1,我选择使用堆栈,这对#2 也有帮助,其中我将堆栈放在零宽度中\makebox
。
在 MWE 中,我也在同一个位置放置了一个红点,这样我们就可以看到这些\put
s 以该点为中心\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}
我可能还会建议使用\stackinset
而不是overpic
。 水平对齐l
、c
、r
(参数 1)和垂直对齐t
、c
、b
(参数 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}
答案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}
为了使给定的坐标成为添加文本的中心,将其括在\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}