다른 용도로 newcommand 인수를 '/'로 중단하시겠습니까?

다른 용도로 newcommand 인수를 '/'로 중단하시겠습니까?

슬라이드당 하나의 그림으로 구성된 많은 프레임으로 프레젠테이션을 만들고 있습니다. 따라서 수백 개의 동일한 코드를 반복해서 사용하는 대신 \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

7개의 인수가 있는 명령은 피해야 합니다. 키-값 접근 방식이 더 좋습니다.

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

no를 path지정하면 현재 디렉터리가 사용됩니다. 보시다시피 에 대한 추가 옵션을 지정할 수도 있습니다 \includegraphics.

여기에 이미지 설명을 입력하세요

관련 정보