使用参数中的命令时出现堆栈错误

使用参数中的命令时出现堆栈错误

我想在我的论文中添加一些图表,其中很多图表都需要裁剪。所以我想使用 includegraphics 的修剪功能。但是,由于图表数量接近 200-300。如果我稍后更改修剪量,则不必更改每个图表的值。因此,我想要类似 trim= \A \B \C \D 的命令,这样我就可以使用 \newcommand 来更改序言中的修剪。但我收到一个失控参数错误,这似乎表明它没有正确地将这 4 个命令一起解释。有人有办法解决这个问题吗?图表名称不重要,因此请使用任何名称进行测试。

\documentclass{report}
\usepackage{graphicx}
\usepackage{caption}
\usepackage{subcaption}

\newcommand{\trimA}{ 4mm }
\newcommand{\trimB}{ 5mm }
\newcommand{\trimC}{ 6mm }
\newcommand{\trimD}{ 7mm }

\begin{document}


\begin{figure}[p]
\centering
\includegraphics[width=0.40\linewidth,trim=\trimA \trimB \trimC \trimD]    {DSG31}
\caption{A Figure}
\end{figure}

\end{document}

答案1

和兄弟的定义中有空格是没有意义的\trimA,因为在执行宏扩展之前空格应该将四个维度分隔开。

只需支撑宏即可。

\documentclass{report}
\usepackage{graphicx}
\usepackage{caption}
\usepackage{subcaption}

\newcommand{\trimA}{4mm}
\newcommand{\trimB}{5mm}
\newcommand{\trimC}{6mm}
\newcommand{\trimD}{7mm}

\begin{document}


\begin{figure}[p]
\centering
\includegraphics[clip,width=0.40\linewidth,trim={\trimA} {\trimB} {\trimC} {\trimD}]{example-image}
\caption{A Figure}
\end{figure}

\end{document}

答案2

问题的本质是从 LaTeX 解析的角度来看,\trimA \trimB \trimC \trimD维度之间没有空格。必须在维度之间添加空格,这里是 ,\trimA{} \trimB{} \trimC{} \trimD{}才能正确消化它。

我自己对这个选项没有什么经验trim,但它似乎只是调整边界框,而没有真正剪切图像。因此,在下面的例子中,由于图像没有边框可修剪,修剪只会使第二张图像看起来更大。(请参阅下面的补救措施)

\documentclass{report}
\usepackage{graphicx}
\usepackage{caption}
\usepackage{subcaption}

\newcommand{\trimA}{ 4mm }
\newcommand{\trimB}{ 5mm }
\newcommand{\trimC}{ 6mm }
\newcommand{\trimD}{ 7mm }

\begin{document}


\begin{figure}[p]
\centering
\includegraphics[width=0.40\linewidth]{example-image}

\includegraphics[width=0.40\linewidth,trim=\trimA{} \trimB{} \trimC{} \trimD{}]{example-image}
\caption{A Figure}
\end{figure}

\end{document}

在此处输入图片描述

如果确实想剪辑原始图像,那么添加这个\clipbox应该会有所帮助。编辑以将效果放置在名为\Includegraphics[]{}(大写“I”)的宏中:

\documentclass{report}
\usepackage{graphicx,trimclip}
\usepackage{caption}
\usepackage{subcaption}

\newcommand{\trimA}{ 28mm }
\newcommand{\trimB}{ 15mm }
\newcommand{\trimC}{ 6mm }
\newcommand{\trimD}{ 7mm }

\newcommand\Includegraphics[2][]{%
  \clipbox{0pt 0pt 0pt 0pt}{%
  \includegraphics[#1,trim=\trimA{} \trimB{} \trimC{} \trimD{}]{#2}}}
\begin{document}
\centering
\includegraphics[width=0.40\linewidth]{example-image}

\Includegraphics[width=0.40\linewidth]{example-image}

\Includegraphics[width=0.20\linewidth]{example-image}
\end{document}

在此处输入图片描述

相关内容