我需要(暂时)重新定义\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
为了避免循环定义(正如达莱夫)我使用这个技巧解决了:
- 我在我的 .tex 中将“\includegraphics”替换为“\myincludegraphics”(使用 很容易做到
emacs
) 我使用以下选项进行编译:
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 表示)。我恢复了文件
\includegraphics
中的字符串.tex
。
这些\resizebox
东西帮助我获得了图形的暂时放大的布局......
需要技巧\myignore
才能获得修剪值的真实估计值(见https://latex.org/forum/viewtopic.php?t=7783)
我编写了一个简短的elisp
函数,可以一次性完成所有这些操作(点 1-3)(我喜欢emacs
)。