![测试列表或词汇表样式是否有效](https://linux22.com/image/262059/%E6%B5%8B%E8%AF%95%E5%88%97%E8%A1%A8%E6%88%96%E8%AF%8D%E6%B1%87%E8%A1%A8%E6%A0%B7%E5%BC%8F%E6%98%AF%E5%90%A6%E6%9C%89%E6%95%88.png)
我想在我的模板中测试一下
\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}