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