Создание длинного макроса/ярлыка в Latex

Создание длинного макроса/ярлыка в Latex

Мне было интересно, можно ли сделать большой макрос для вставки цифр? Я хотел, чтобы он содержал:

\begin{figure} [H]

\centering

\includegraphics[scale=0.8]{#FILENAME}

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

\end{figure}

Видя, что он такой длинный, я хотел упростить вставку такого длинного "кода". Сделать его средой в преамбуле? Или новой командой?

Буду благодарен за любую помощь!

решение1

Попытался ли ты:

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

Вы бы использовали это как

\Figure{filename}{caption}{label}

На самом деле, было бы еще лучше:

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

Второй вариант определяет необязательный аргумент, который по умолчанию равен scale=0.8, для передачи аргументов в \includegraphics. Например, вы можете написать что-то вроде \Figure[width=3cm]{filename}{caption}{label}.

Редактировать: необязательная короткая подпись

Sigur попросил в комментариях сделать необязательную короткую подпись. Это на самом деле немного сложнее в том смысле, что следующее не работает:

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

потому что без необязательного аргумента #1пусто и макрос вставляет \caption[]{...long caption...}, поэтому короткая подпись пуста! Чтобы обойти это, вы можете вместо этого сделать значение по умолчанию #1равным \relax, например, а затем в макросе использовать

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

Теперь макрос ведет себя так, как и ожидалось.

Однако лучшим решением будет использовать \NewDocumentCommandизxparsepackage, потому что это позволит вам иметь два необязательных аргумента. Вот один из способов сделать это:

\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}

Необязательный аргумент между ними [...]станет краткой подписью, а необязательный аргумент между ними <...>будет передан \includegraphics, при этом значением по умолчанию будет scale=0.8.

Связанный контент