![绘制网格以获取要传递给 includegraphics 的视口选项的坐标](https://linux22.com/image/267436/%E7%BB%98%E5%88%B6%E7%BD%91%E6%A0%BC%E4%BB%A5%E8%8E%B7%E5%8F%96%E8%A6%81%E4%BC%A0%E9%80%92%E7%BB%99%20includegraphics%20%E7%9A%84%E8%A7%86%E5%8F%A3%E9%80%89%E9%A1%B9%E7%9A%84%E5%9D%90%E6%A0%87.png)
我想仅包含图像的一部分。为此,我使用'sviewport
选项。为了找到坐标,我反复试验,不断调整参数,直到找到正确的坐标。这是低效的。graphicx
includegraphics
viewport
\documentclass{standalone}
\usepackage{graphicx}
\begin{document}%
\includegraphics[viewport=0 0 10 10,clip]{image}
\end{document}
有什么方法可以轻松获取/绘制网格,以高效选择要传递给的坐标viewport
?例如,当我想使用在图像上绘图时tikz
,我会绘制帮助线
根据这篇文章。在这种情况下,我根本不想绘制;我只想仅包含图像的指定部分。
答案1
\documentclass{article}
\usepackage{graphicx,xcolor}
\usepackage[abs]{overpic}% option [abs] for absolute values
\begin{document}%
\begin{overpic}[scale=0.5,unit=1mm,grid,tics=10]{tiger}
\put(50,50){\makebox[0pt]{\colorbox{blue}{\color{white}\Huge Tiger}}}
\end{overpic}
\fbox{\includegraphics[viewport=80mm 120mm 120mm 160mm,scale=0.5,clip]{tiger}}
\end{document}
绝对值被缩小了,这就是我必须将眼睛的坐标加倍的原因。
答案2
使用 PSTricks。
\documentclass[preview,border=12pt]{standalone}% remove border option to get a tight output
\usepackage{pstricks}
\def\M{10}% columns
\def\N{10}% rows
\def\scale{1}% scale
\def\filename{shaolin}% filename
\usepackage{graphicx}
\newsavebox\IBox
\savebox\IBox{\includegraphics[scale=\scale]{\filename}}
\addtopsstyle{gridstyle}
{
gridcolor=yellow,
subgridcolor=gray,
subgriddiv=10,
griddots=0,
subgriddots=5,
gridwidth=0.4pt,
subgridwidth=0.2pt,
}
\psset
{
xunit=\dimexpr\wd\IBox/\M,
yunit=\dimexpr\ht\IBox/\N,
}
\def\Navigator{%
\begin{pspicture}[showgrid=top](\M,\N)
\rput[bl](0,0){\usebox\IBox}
\end{pspicture}}
\def\ViewPort(#1,#2)(#3,#4){\viewport(\the\dimexpr#1\psxunit,\the\dimexpr#2\psyunit)(\the\dimexpr#3\psxunit,\the\dimexpr#4\psyunit)}
\def\viewport(#1,#2)(#3,#4){\includegraphics[scale=\scale,viewport=#1 #2 #3 #4,clip]{\filename}}
\begin{document}
%\Navigator% disable it after using
\ViewPort(2,3)(6,6)
\end{document}
如何使用:
\Nagivator
将显示我们确定视口坐标的网格。\ViewPort
用于剪切视口之外的所有内容。删除
border
文档类中的选项以获得紧密的输出。