Hacer una macro/atajo largo en Latex

Hacer una macro/atajo largo en Latex

Me preguntaba si era posible hacer una macro grande para insertar figuras. Quería que contuviera:

\begin{figure} [H]

\centering

\includegraphics[scale=0.8]{#FILENAME}

\caption{#FIGURECAPTION \label{#LABELREF}}

\end{figure}

Al ver que es tan largo, quería que fuera más fácil insertar un "código" tan largo. ¿Debería incluirlo como entorno en el preámbulo? ¿O como un nuevo comando?

¡Estaría agradecido por cualquier tipo de ayuda que pudiera obtener!

Respuesta1

Has probado:

\newcommand\Figure[3]{%
  \begin{figure} [H]
    \centering
    \includegraphics[scale=0.8]{#1}
    \caption{#2}\label{#3}
  \end{figure}
}

Usarías esto como

\Figure{filename}{caption}{label}

En realidad, incluso mejor sería:

\newcommand\Figure[4][scale=0.8]{%
  \begin{figure} [H]
    \centering
    \includegraphics[#1]{#2}
    \caption{#3}\label{#4}
  \end{figure}
}

La segunda variante define un argumento opcional, cuyo valor predeterminado es scale=0.8, para pasar argumentos a \includegraphics. Por ejemplo, podrías escribir cosas como \Figure[width=3cm]{filename}{caption}{label}.

Editar: título corto opcional

Sigur solicitó en los comentarios un título breve opcional. En realidad, esto es un poco más complicado en el sentido de que lo siguiente no funciona:

\newcommand\Figure[4][]{%
  \begin{figure} [H]
    \centering
    \includegraphics[scale=0.8]{#2}
    \caption[#1]{#3}\label{#4}
  \end{figure}
}

porque sin ningún argumento opcional #1está en blanco y la macro se inserta \caption[]{...long caption...}, por lo que el título breve está vacío. Para evitar esto, podría hacer que el valor predeterminado sea #1igual a \relax, por ejemplo, y luego en la macro usar

\ifx#1\relax\relax\caption{#3}\else\caption[#1]{#3}\fi

Ahora la macro se comporta como se esperaba.

Una mejor solución, sin embargo, es utilizar \NewDocumentCommanddesde elxparsepaquete porque esto le permitirá tener dos argumentos opcionales. Aquí hay una forma de hacerlo:

\documentclass{article}
\usepackage{mwe}
\usepackage{xparse}
\usepackage{float}
\NewDocumentCommand\Figure{o D<>{scale=0.8} m m m}{%
  % [optional short caption]<optional includegraphics options>{image}{caption}{label}
  \begin{figure}[H]
    \centering
    \includegraphics[#2]{#3}
    \IfNoValueTF{#1}{\caption{#4}}{\caption[#1]{#4}}
    \label{#5}
  \end{figure}
}
\begin{document}

  \Figure{example-image-a}{Normal figure}{f:normal}

  \Figure<width=20mm>{example-image-a}{Width 20mm }{f:20mm}

  \Figure[Short caption]<width=20mm>{example-image-a}{With 20mm with short caption}{f:20mm}

  \Figure[Short caption]{example-image-a}{Short caption}{f:20mm}

\end{document}

Un argumento opcional intermedio [...]se convertirá en el título corto y <...>se le dará un argumento opcional intermedio \includegraphics, siendo el valor predeterminado scale=0.8.

información relacionada