如何在 \includegraphics 选项中使用宏?

如何在 \includegraphics 选项中使用宏?

我必须做几个这样的数字:

\begin{figure}[h!]
  \centering
    \includegraphics[trim = 9.55cm 1.8cm 10.25cm 4.05cm, clip,width=1\textwidth]{./../ficherosComunes/images/capturaapp/01-actividadprincipal.png}
  \caption{Captura de pantalla de ActividadPrincipal.java}
\end{figure}

\begin{figure}[h!]
  \centering
    \includegraphics[trim = 9.55cm 1.8cm 10.25cm 4.05cm, clip,width=1\textwidth]{./../ficherosComunes/images/capturaapp/02-listadoficheros.png}
  \caption{Captura de pantalla de ActividadFicheros.java.}
\end{figure}

\begin{figure}[h!]
  \centering
    \includegraphics[trim = 9.55cm 1.8cm 10.25cm 4.05cm, clip,width=1\textwidth]{./../ficherosComunes/images/capturaapp/03-listadoficherodetalles.png}
  \caption{Captura de pantalla de ActividadFicheroDetalles.java.}
\end{figure}

可以看出,所有时间都是重复的。trim = 9.55cm 1.8cm 10.25cm 4.05cm, clip,width=1\textwidth是否可以将其写入变量中?我尝试定义,\newcommand{\texttrim}{trim = 9.55cm 1.8cm 10.25cm 4.05cm, clip,width=1\textwidth}但如果将其作为选项,则不起作用。我还尝试定义长度(至少定义修剪长度),但它们也不起作用。

答案1

做这件事有很多种方法:

1. 定义一个新命令

(正如 carsten 所说)

\newcommand{\trimmedgraphic}[2][]{%
    \includegraphics[trim = 1cm 2cm 1cm 2cm,clip,width=1\textwidth,#1]%
        {#2}%
}

您可以使用可选参数定义命令,以便能够将其他选项传递给\includegraphics。您可以{figure}根据需要添加内容。

2. 定义一个命令来预设按键

\newcommand{\settrimming}{%
    \setkeys{Gin}{%
        trim = 1cm 2cm 1cm 2cm,clip=true,
        width=\textwidth,
    }
    \presetkeys{Gin}{clip}{}
}

如果您使用,则\settrimming所有后续图形都将被修剪。您可以在序言中使用它(然后您可以直接使用定义,而不需要将其包装在中\settrimming),或者在组(如{figure}env)中使用它来限定其效果。请注意,您需要xkeyval.sty以这种方式加载。

3. 使用\edef\expandafter

\edef\trimoptions{trim = 1cm 2cm 1cm 2cm, clip,width=1\textwidth}

您可以使用它\edef来存储选项,然后通过添加两个选项使其在选项列表中可用\expandafter

\expandafter\includegraphics\expandafter[\trimoptions]{example-image}

完整的 MWE 示例

\documentclass{article}

\usepackage{xkeyval}% necessary for \presetkeys
\usepackage{graphicx}

\newcommand{\trimmedgraphic}[2][]{%
    \includegraphics[trim = 1cm 2cm 1cm 2cm,clip,width=1\textwidth,#1]%
        {#2}%
}

\newcommand{\settrimming}{%
    \setkeys{Gin}{%
        trim = 1cm 2cm 1cm 2cm,clip=true,
        width=\textwidth,
    }
    \presetkeys{Gin}{clip}{}
}

\edef\trimoptions{trim = 1cm 2cm 1cm 2cm, clip,width=1\textwidth}

\begin{document}
    \begin{figure}
        \includegraphics[trim = 1cm 2cm 1cm 2cm, clip,width=1\textwidth]%
            {example-image}
        \caption{Normal figure}
    \end{figure}

    \begin{figure}
        \trimmedgraphic{example-image-a}
        \caption{Figure using trimmedgraphic}
    \end{figure}

    \begin{figure}
        \trimmedgraphic[width=0.5\textwidth]{example-image-b}
        \caption{Figure using trimmedgraphic}
    \end{figure}

    \begin{figure}
        \settrimming
        \includegraphics{example-image-c}
        \caption{Figure using settrimming}
    \end{figure}

    \begin{figure}
        \expandafter\includegraphics\expandafter[\trimoptions]{example-image}
        \caption{Figure using edef and expandafter}
    \end{figure}
\end{document}

答案2

您可以将整个内容定义为一个命令,并将图形详细信息作为参数,如下所示

\newcommand\myfigure[2]{%
 \begin{figure}[h!]
  \centering
    \includegraphics[trim = 9.55cm 1.8cm 10.25cm 4.05cm, clip,width=1\textwidth]%
    {#1}
    \caption{#2}
 \end{figure}%
}

然后简单地像这样调用它

\myfigure{./../ficherosComunes/images/capturaapp/01-actividadprincipal.png}{Captura de pantalla de ActividadPrincipal.java}

相关内容