我正在处理一个文档,其中我想包含一些图像,并可以选择在图像上绘制一个矩形。我创建了一个命令,\includegraphicsWithOptionalRectangle
它接受两个参数:图像文件的路径和一个可选参数,用于指定是否绘制矩形。如果将可选参数设置为Rect
,则会在图像上绘制一个红色矩形。
代码:
\documentclass{article}
\usepackage{tikz}
\usepackage{ifthen}
\newcommand{\includegraphicsWithOptionalRectangle}[2][noRect]
{
\begin{tikzpicture}
\node[anchor=south west, inner sep=0] (image) at (0,0) {\includegraphics[width=1\textwidth]{#2}};
\begin{scope}[x={(image.south east)},y={(image.north west)}]
\ifthenelse{\equal{#1}{Rect}}
{
% Define rectangle coordinates
\coordinate (lowerleft) at (0.72,0.89); % Adjust these coordinates as needed
\coordinate (upperright) at (0.55,0.75); % Adjust these coordinates as needed
% Draw rectangle
\draw[red] (lowerleft) rectangle (upperright);
}
{
% Draw no rectangle
}
\end{scope}
\end{tikzpicture}
}
\begin{document}
% Image with no Rectangle (default):
\includegraphicsWithOptionalRectangle{example-image}
% Image with Rectangle (controlled coordinates):
\includegraphicsWithOptionalRectangle[Rect]{example-image}
\end{document}
输出:
问题
当可选参数设置为时,我该如何控制矩形的lowerleft
和角的坐标?我希望能够根据图像和矩形的所需位置动态指定这些坐标。任何实现此目的的建议或改进都将不胜感激。谢谢!upperright
Rect
答案1
这可以通过 轻松实现xparse
。将 的星号版本定义\myincludegraphics
为默认版本includegraphics
,不绘制矩形。然后非星号版本将有两个可选参数来指定矩形的坐标。第一个将是总宽度和高度的一小部分的左下角位置。第二个将是总宽度和高度的一小部分的右上角位置。这里 1 将是整个宽度和高度,默认情况下将为整个图像绘制矩形。以下是代码和示例:
\documentclass{article}
\usepackage{tikz}
\NewDocumentCommand{\myincludegraphics}{s O{0,0} O{1,1} m}{%
\IfBooleanTF{#1}{%
\noindent\includegraphics[width=1\textwidth]{#4}%
}{%
\begin{tikzpicture}
\node[anchor=south west, inner sep=0] (image) at (0,0) {\includegraphics[width=1\textwidth]{#4}};
\begin{scope}[x={(image.south east)},y={(image.north west)}]
\draw[red] (#2) rectangle (#3);
\end{scope}
\end{tikzpicture}%
}}
\begin{document}
\myincludegraphics*{example-image}
\myincludegraphics{example-image}
\myincludegraphics[0.25,0.35][0.75,0.65]{example-image}
\end{document}