使用‘/’分解新命令参数以供不同用途?

使用‘/’分解新命令参数以供不同用途?

我正在创建一个包含很多框架的演示文稿,每张幻灯片一个图形。因此,我创建了一个简单的演示文稿,而不是一遍又一遍地编写数百个相同的代码,\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

在此处输入图片描述

相关内容