
Я создаю презентацию с большим количеством кадров с одним рисунком на слайде. Поэтому вместо того, чтобы иметь сотни одного и того же кода снова и снова, я создал простой \newcommand
для него, где одним из аргументов является имя рисунка, которое я также использую в качестве метки для рисунка. Но когда я использую подпапки рисунков, аргументом является: subfolderone/subfoldertwo/figurename
. Но я хочу использовать только figurename
в качестве метки рисунка.
Можно ли разбить аргумент №1 на "/" и использовать только последний для маркировки? Иначе... Я просто создам еще один входной аргумент.
\documentclass{beamer}
\usepackage{graphicx}
\newcommand{\figcaptiontitlecrop}[7]{%
\begin{frame}[b]{#3}
\begin{figure}
\centering
\includegraphics[trim=#4mm #5mm #6mm #7mm, clip]{#1}
\caption{#2}%
\label{fig:#1}%
\end{figure}
\end{frame}
}
\begin{document}
\figcaptiontitlecrop{filename}{Caption Text}{Frame Title Here}{0}{0}{0}{0}
%\figcaptiontitlecrop{figures/subfolder/filename}{Caption Text}{Frame Title Here}{0}{0}{0}{0}
\end{document}
решение1
Команду с семью аргументами следует избегать. Лучше использовать подход «ключ-значение»:
\documentclass{beamer}
\usepackage{graphicx}
\usepackage{xparse}
\ExplSyntaxOn
\NewDocumentCommand{\beamerfigure}{mm}
{
\begin{frame}[b]
\keys_set:nn { bjartmar/beamerfigure } { #1 }
\frametitle{\l_bjartmar_beamerfigure_title_tl}
\begin{figure}
\centering
\use:x
{
\exp_not:N \includegraphics [
\l_bjartmar_beamerfigure_options_tl,
trim=\l_bjartmar_beamerfigure_tl,
clip
]
}{\l_bjartmar_beamerfigure_path_tl / \l_bjartmar_beamerfigure_name_tl}
\caption{#2}
\label{fig:\l_bjartmar_beamerfigure_name_tl}
\end{figure}
\end{frame}
}
\keys_define:nn { bjartmar/beamerfigure }
{
title .tl_set:N = \l_bjartmar_beamerfigure_title_tl,
path .tl_set:N = \l_bjartmar_beamerfigure_path_tl,
path .initial:n = {.},
name .tl_set:N = \l_bjartmar_beamerfigure_name_tl,
options .tl_set:N = \l_bjartmar_beamerfigure_options_tl,
trim .tl_set:N = \l_bjartmar_beamerfigure_tl,
trim .initial:n = 0~0~0~0,
}
\ExplSyntaxOff
\begin{document}
\beamerfigure{
name=donald-duck,
options={height=.5\textheight},
trim=0 5 0 5,
}{This is Donald Duck}
\beamerfigure{
path=/usr/local/texlive/2016/texmf-dist/tex/latex/mwe/,
name=example-grid-100x100pt,
}{Another figure}
\end{document}
Если не path
указано, используется текущий каталог. Как видите, можно также указать дополнительные параметры для \includegraphics
.