我正在开发一个定制的报告类,旨在为我们公司编写技术文档。除了其他花哨的功能外,我最好使用lmodern
带有“”选项的“ lighttt
”包。这个问题源于我们将这个类与
\usepackage[lighttt]{lmodern}
不仅在现代操作系统(如 Ubuntu 16.04)下,而且在 SLES11sp2 下也是如此。后者使用“ lmodern 2007/01/14 v1.3
”,而它还没有“ lighttt
”选项。因此我收到错误并且处理停止...
我也试过
\PassOptionsToPackage{lighttt}{lmodern}
\usepackage{lmodern}
但又报错。
在 LaTeX 中,如何表达“请使用软件包lmodern
和选项lighttt
。但如果没有,加载裸lmodern
包也可以。”?
在伪代码中这可能看起来像:
\ifpackagehasoption{lmodern}{lighttt}{%
\usepackage[lighttt]{lmodern}}{% preferred
\usepackage{lmodern}}% fallback
谷歌搜索“latex load packageoptional”和“latex check quality of package although a option is not available”并没有带来任何有用的结果。
SLES11sp2 系统的一些版本号:
pdfTeX, Version 3.141592-1.40.3 (Web2C 7.5.6)
LaTeX2e <2005/12/01>
不,更新系统不是一个选项......;)
并且无论如何也无法回答实际问题。
答案1
我只看到检查 texliveversion 并加载软件包的解决方案
一个例子:
\def\gettexliveversion#1(#2 #3 #4#5#6#7#8)#9\relax{#4#5#6#7}
\edef\texliveversion{\expandafter\gettexliveversion\pdftexbanner\relax}
\ifnum\texliveversion >2010
\RequirePackage[svgnames]{xcolor}
\else
\RequirePackage{xcolor}
\fi
\documentclass[12pt]{report}
\begin{document}
text \color{Red} sfgsd
\end{document}
如果您知道 texlive 版本,您可能知道您“传递”的选项是否有效......
代码也可以改为读取月份和日期......
但是你必须知道 texlive 版本中使用了哪个版本的包。
答案2
根据@UlrikeFischer 的建议,这是我想到的解决方案,目前正在成功使用:
%
% Adding the lighttt option to the global list of class options
%
\ifx\@empty\@classoptionslist
\g@addto@macro\@classoptionslist{lighttt}
\else
\g@addto@macro\@classoptionslist{,lighttt}
\fi
% Now we can pull in the lmodern package, it will skip the `lighttt` option if
% it is unknown...
\usepackage{lmodern}