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