titlepage 中的可选参数

titlepage 中的可选参数

我正在创建的 .sty 文件遇到了一个小问题。

我希望可以在标题中添加徽标,这没问题。

但是,如果我现在遇到不添加徽标的情况(通过将输入留空或不在主文件中执行命令)我会创建一个!Latex 错误:未找到文件“”。

文档仍然被创建并且看起来良好。

因为我想把这个麦粒肿送给其他人,所以我还是想避免出现这个错误......

以下是我迄今为止使用的代码片段:

%create a placeholder for a logo
\newcommand* {\@titlelogo}{}
\newcommand*{\titlelogo}[1]{\def\@titlelogo{#1}}

我尝试避免以下错误(但没有成功):

\ifdefined \titlelogo {\includegraphics[height=1.5cm]{\@titlelogo} }
\else \fi

也许对于例如标题页中的可选参数有一个优雅的解决方案,我只是不知道。

非常感谢,Claudia

答案1

您可以使用内置的布尔检查,并\iftitlelogo从一开始就将其设置为 false。设置徽标时,将其变为 true。(还有更多奇特的方法来执行布尔检查,但我认为这在这里有效)。

\documentclass{article}
\usepackage{graphicx}
\makeatletter
\newif\iftitlelogo
\titlelogofalse% default no logo picture
\newcommand{\@titlelogo}{}
\newcommand{\titlelogo}[1]{\titlelogotrue\def\@titlelogo{#1}}
\newcommand\mytitle[1]{%
  \iftitlelogo
    \includegraphics[width=1.5cm]{\@titlelogo} #1
  \else
    #1
  \fi%
}
\makeatother
\begin{document}
\mytitle{Test without logo}

\titlelogo{example-image}
\mytitle{Test with logo}

\end{document}

在此处输入图片描述

答案2

多谢!

与此同时,我发现了一个相当优雅的解决方法(符合我的口味),它只检查字符串的长度是否大于 0

\stringlength[q]{\@titlepic}% Result is stored in \theresult

\def\mythresh{1}
\ifnum\theresult>\mythresh
\includegraphics[width=0.18\textwidth]{\@titlepic}
\else \fi

这需要以下包:

\RequirePackage{stringstrings}

相关内容