测试列表或词汇表样式是否有效

测试列表或词汇表样式是否有效

我想在我的模板中测试一下

\lstinputlisting[style=mystyle,...

或者

\printglossary[style=mystyle,...

是有效的或者会因为未知的风格而失败。

但是我无法在 sty 文件中找到如何保存和检查这些样式。

答案1

glossaries\@glsstyle@<style>为每种风格定义一个名为的内部宏<style>

的情况下listings这比这稍微复杂一点。基本上为每种样式listings定义一个宏。但是,有一个未记录的可选参数,其用途对我来说不太清楚。将定义一个宏。不过,我以前从未见过可选参数的用例,而且我的(非常肤浅的)测试也没有揭示如何加载这样的样式。\lststy@<style>$\lstdefinestyle\lstdefinestyle[foo]{mystyle}\lststy@mystyle$foo

也许类似下面的方法适合你:

\documentclass{article}

\usepackage{etoolbox}
\usepackage{listings,glossaries}

% ignore the optional argument:
\newcommand*\ifdeflststyle[1]{%
  \ifcsdef{lststy@#1$}}

\newcommand*\ifdefglsstyle[1]{%
  \ifcsdef{@glsstyle@#1}}

\begin{document}

\lstdefinestyle{mystyle}{}
\ifdeflststyle{mystyle}{true}{false}     % => true
\ifdeflststyle{myotherstyle}{true}{false}% => false

\ifdefglsstyle{list}{true}{false}   % => true
\ifdefglsstyle{mystyle}{true}{false}% => false
\newglossarystyle{mystyle}{}
\ifdefglsstyle{mystyle}{true}{false}% => true

\end{document}

相关内容