在图形上添加网格以便于修剪(通过重新定义 \includegraphics)

在图形上添加网格以便于修剪(通过重新定义 \includegraphics)

我需要(暂时)重新定义\includegraphics命令以进行修剪。这是我的 MWE:

\documentclass[11pt]{article}
\usepackage{graphicx}
\usepackage[abs]{overpic}
\pagestyle{empty}
\begin{document}
\begin{figure}[h]
\centering
\resizebox*{1\textwidth}{!}{\begin{overpic}[grid,unit=1pt]{lemon.jpg}
\end{overpic}}\relax

\includegraphics[trim = 0 100 0 100, clip, width=1\textwidth]{lemon.jpg}
\caption{\label{myfig}My caption.}
\end{figure}

\end{document}

在此处输入图片描述

在此示例中,我插入了一张带有环境的图片,该图片在我的图形上创建了一个网格。这使我能够快速找到要传递给命令参数的overpic值。trim\includegraphics

为了使这个操作不那么“过度”,我尝试以\includegraphics这种方式重新定义命令:

\renewcommand*{\includegraphics}[2][]{\resizebox*{1\textwidth}{!}{%
\begin{overpic}[grid,unit=1pt]{#2}\end{overpic}}\relax}

但它不起作用。我收到此错误:

! TeX capacity exceeded, sorry [grouping levels=255]....

我知道你可能觉得这有点“过度”,但我有充分的理由这样做。(这将允许我通过命令行传递这个重新定义,保持我.tex不受任何影响)

我的答案是“我如何重新定义\includegraphics命令以在我的图形中插入这种网格?我的代码有什么问题?”

我从这篇文章中得到了这个想法:https://latex.org/forum/viewtopic.php?t=7783

编辑。我不明白为什么如果我定义这个命令

\newcommand{\vacua}[1]{}
\newcommand*{\myincludegraphics}[2][]{\resizebox*{1\textwidth}{!}{%
\begin{overpic}[grid,unit=1pt]{#2}\end{overpic}}\relax\vacua{#1}}

字符串:

\myincludegraphics[trim = 0 100 0 100, clip, width=1\textwidth]{lemon.jpg}

正确生成带有网格的图片。但如果我这样做:

\newcommand{\myignore}[1]{}
\let\includegraphics\undefined %% I undefine "\includegraphics"
\newcommand*{includegraphics}[2][]{\resizebox*{1\textwidth}{!}{%
\begin{overpic}[grid,unit=1pt]{#2}\end{overpic}}\relax\myignore{#1}}

使用字符串:

\includegraphics[trim = 0 100 0 100, clip, width=1\textwidth]{lemon.jpg}

我总是遇到同样的错误。

答案1

为了避免循环定义(正如达莱夫)我使用这个技巧解决了:

  1. 我在我的 .tex 中将“\includegraphics”替换为“\myincludegraphics”(使用 很容易做到emacs
  2. 我使用以下选项进行编译:

    pdflatex '\AtBeginDocument{\RequirePackage[abs]{overpic}\newcommand{\myignore}\[1]{} \newcommand*{\myincludegraphics}\[2][]{\resizebox*{1\textwidth}{!}{\begin{overpic}[grid,unit=1pt]{#2}\end{overpic}}\relax\myignore{#1}}} \nonstopmode\input{myfile.tex}' 
    

    现在,我得到了使用该命令插入的所有图片上的网格\includegraphics,并且我可以使用trim参数来调整布局,以获得可见的修剪值估计值(以 pt 表示)。

  3. 我恢复了文件\includegraphics中的字符串.tex

这些\resizebox东西帮助我获得了图形的暂时放大的布局......

需要技巧\myignore才能获得修剪值的真实估计值(见https://latex.org/forum/viewtopic.php?t=7783

我编写了一个简短的elisp函数,可以一次性完成所有这些操作(点 1-3)(我喜欢emacs)。

相关内容