我正在尝试调整样式文件,我有一个如下的“def”:
\def\logo#1{\gdef\@logo{#1}} \gdef\@logo{}
自定义“制作标题”内部:
\includegraphics[scale=0.1]{\@logo}
我是 Tex/Macros 的新手,我只是想知道如何将比例参数添加到“logo”def 宏中?也就是说,我想完全参数化对的调用\includegraphics
。
编辑:如下所示,我以简单的风格将徽标添加到“maketitle”中,不确定是否有更好的方法来做到这一点?
\newcommand{\logo}[2][]{%
\gdef\make@logo{\includegraphics[#1]{#2}}%
}
\let\make@logo\relax
%% title
\def\@maketitle
{
\clearpage
\vskip -3em
\ifx\make@logo\relax
\else
\make@logo
\fi
\newpage
\thispagestyle{empty}
\vspace*{-24pt}
\begin{center}
{\Large \bf \@title \par}\vspace*{24pt}{
\lineskip 1em
\begin{tabular}[t]{c}
\@author \\
\vspace*{1pt}\
\end{tabular}
}
\vskip 1em
\vspace*{12pt}
\end{center}
}
答案1
宏\logo
可以通过可选参数来定义,该参数采用以下选项\includegraphics
:
\newcommand*{\logo}[2][]{%
\gdef\@logo@params{#1}%
\gdef\@logo{#2}%
}
\newcommand*{\@logo@params}{}
\newcommand*{\@logo}{}
用法\includegraphics
:
\expandafter\includegraphics\expandafter[\@logo@params]{\@logo}
首先需要扩展选项,因为键值列表的语法字符逗号和等号不能隐藏在宏内。
例如\logo
:
\logo[scale=0.1]{example-image-a}
或者
\logo[width=2cm, angle=90]{example-image-a}
答案2
你可以做
\newcommand{\logo}[2][]{%
\gdef\make@logo{\includegraphics[#1]{#2}}%
}
\let\make@logo\relax
\make@logo
并在你构建自定义标题时使用,例如
\ifx\make@logo\relax
% code for no logo, maybe nothing
\else
% code before the logo, maybe \begin{center}
\make@logo
% code after the logo, maybe \end{center}
\fi
因此,如果使用样式文件的文档序言有
\logo[scale=0.1]{file}
当标题被排版时你会得到
\includegraphics[scale=0.1]{file}
如果没有\logo
命令,你将一无所获。
该\logo
命令在其可选参数中接受任何对 有效的选项\includegraphics
,例如
\logo[width=3cm]{file}
\logo[width=3cm,height=4cm,keepaspectratio]{file}
等等。
答案3
如果scale
这就是您所追求的,并且您对像这样的界面感到满意\logo[0.7]{my-pic.png}
,那么一个简单的\newcommand
带有可选参数的操作就可以了:
\newcommand{\logo}[2][1]{\includegraphics[scale=#1]{#2}}
如果您不使用可选参数,则它默认为1
。