我正在创建的 .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}