![newcommand 在图形选项中不起作用](https://linux22.com/image/402062/newcommand%20%E5%9C%A8%E5%9B%BE%E5%BD%A2%E9%80%89%E9%A1%B9%E4%B8%AD%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8.png)
我想利用一个可以多次使用的变量来确保所有图形的大小都相同。
目前我有多张带有以下代码的图像:
\documentclass[a4paper, 11pt]{report}
\usepackage{graphicx}
\begin{document}
\begin{figure}[h!]
\centering
\frame{\includegraphics[width=\textwidth,trim={4.0cm 4.0cm 4.5cm 4.5cm},clip]{SomeImage.png}}
\caption{Some caption describing image.}
\label{fig: SomeImage}
\end{figure}
\end{document}
我现在想为修剪设置创建一个变量,以便我可以将其重复用于所有与此相似的图形。因此,我按如下方式进行:
\documentclass[a4paper, 11pt]{report}
\usepackage{graphicx}
\newcommand{\ncTrimmed}{{4.0cm 4.0cm 4.5cm 4.5cm}}
\begin{document}
\begin{figure}[h!]
\centering
\frame{\includegraphics[width=\textwidth,trim=\ncTrimmed,clip]{SomeImage.png}}
\caption{Some caption describing image.}
\label{fig: SomeImage}
\end{figure}
\end{document}
无论我对新命令做什么,都无法使其工作。Latex 一直给我报错,如“缺少 } 插入”等。我做错了什么?
答案1
您必须进行扩展,\ncTrimmed
具体操作如下:
\begingroup
\edef\x{\endgroup
\noexpand\frame{\noexpand\includegraphics
[width=\textwidth,trim=\ncTrimmed,clip]{example-image}}}\x
简而言之,这里的用例代表
\begingroup
\edef\x{\endgroup
<stuff>}\x
\edef\x{<def>}
展开 中包含的所有内容<def>
。因为\endgroup
是不是可扩展,的定义\x
是临时的(在和内\begingroup
,使用\endgroup
一次)。这里包含您想要扩展的任何内容,而保留不扩展。因此,之后将扩展为\x
<stuff>
\noexpand<cmd>
<cmd>
\x
\endgroup
\frame{\includegraphics[width=\textwidth,trim={4.0cm 4.0cm 4.5cm 4.5cm},clip]{example-image}}
(因为\textwidth
不可扩展)。你可以看到,使用
\begingroup
\edef\x{\endgroup
<stuff>}\show\x
\show\x
会向您展示\x
的定义。您会看到,除了扩展的 之外,其他一切都保持不变\ncTrimmed
。