Quebrar os argumentos do novo comando por '/' para uso diferente?

Quebrar os argumentos do novo comando por '/' para uso diferente?

Estou criando uma apresentação com vários quadros com uma figura por slide. Então, em vez de ter centenas do mesmo código repetidamente, criei um simples \newcommandpara ele, onde um dos argumentos é o nome da figura, que também uso como rótulo para a figura. Mas quando uso subpastas de figuras o argumento é: subfolderone/subfoldertwo/figurename. Mas eu só quero usar figurenamecomo rótulo da figura.

É possível quebrar o argumento nº 1 por “/” e usar apenas o último para rotulagem? Senão... farei apenas outro argumento de entrada.

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

Responder1

Um comando com sete argumentos deve ser evitado. Uma abordagem de valor-chave é melhor:

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

Se não pathfor especificado, o diretório atual será usado. Como você pode ver, você também pode especificar opções adicionais para \includegraphics.

insira a descrição da imagem aqui

informação relacionada