我想扩展支持的语言列表列表环境来自列表包。我有一个定义 - 例如pddl 语言在*.sty 文件中定义。
如何将此语言定义添加到我的 tex 安装中?我想知道 Windows(MikTex)和 Linux(TexLive)的程序
在 Windows 上,我已经部分成功了。我通过将 *.sty 文件添加到 C:\Program Files (x86)\MiKTeX 2.9\tex\latex\listings 文件夹来启用新语言。但是,只有在运行 MikTex 更新后它才有效。
那么什么样的程序对于 Windows 是正确的,什么样的程序对于 Linux 是正确的?
编辑:最小例子:
\documentclass[a4paper,12pt]{article}
\usepackage{listings}
\begin{document}
\begin{lstlisting}
(:durative-action load-truck
:parameters (?obj - obj ?truck - truck ?location - location)
:duration (= ?duration 2)
:condition (and
(over all (at ?truck ?location))
(at start (at ?obj ?location))
}
:effect(and
(at start (not (at ?obj ?location)))
(at end (in ?obj ?truck))
)
)
\end{lstlisting}
\end{document}
目标(添加[language=pddl]):
\documentclass[a4paper,12pt]{article}
\usepackage{listings}
\begin{document}
\begin{lstlisting}[language=pddl]
(:durative-action load-truck
:parameters (?obj - obj ?truck - truck ?location - location)
:duration (= ?duration 2)
:condition (and
(over all (at ?truck ?location))
(at start (at ?obj ?location))
}
:effect(and
(at start (not (at ?obj ?location)))
(at end (in ?obj ?truck))
)
)
\end{lstlisting}
\end{document}
Couldn't load requested language
如果没有安装语言,则会导致错误。
答案1
引用该包装的手册listings
第 43 页:
我应该把我的语言定义放在哪里?
如果您需要某个特定文档的语言,请将其放入该文档的序言中。否则,请创建本地文件
lstlang0.sty
或将定义添加到该文件,但使用\lst@definelanguage
而不是\lstdefinelanguage
。
我将最后一句话重新表述如下:
“否则,将定义添加到本地文件lstlang0.sty
(必要时创建它),但使用\lst@definelanguage
而不是\lstdefinelanguage
。”
那么“本地文件”应该lstlang0.sty
存储在哪里(必要时创建)?有两种可能性:个人 texmf 树和本地(机器范围) texmf 树。
使用当地的(机器范围的)texmf 树(如果您拥有足够的管理权限,并且想要让文件可供计算机上的所有用户使用)。要了解本地 texmf 树的根在您的机器上的位置,请键入
kpsewhich -var-value TEXMFLOCAL
在终端(模拟器)提示符下。
用你的个人的如果您不允许修改计算机上的本地树,或者您不想与其他用户共享相关文件,则 texmf 树;事实上,每个用户的个人 texmf 树都位于该用户主目录中的某个位置。要了解您的个人 texmf 树在您的计算机上的根路径,请键入
kpsewhich -var-value TEXMFHOME
在终端(模拟器)提示符下。
无论您决定使用哪种树,如果我们用 表示其根MYTEXMF
,则lstlang0.sty
文件应放置在 下MYTEXMF/tex/latex/
,要么直接放在该目录内,要么放在其子(子...子)目录中。可能需要创建相关目录(IE,tex
和/或tex/latex
)。
例如,假设你决定使用你的个人 texmf 树。在我的系统上,
kpsewhich -var-value TEXMFHOME
返回
/Users/gustavo/Library/texmf
(/Users/gustavo
我的主目录在哪里):这意味着我应该创建一个具有以下完整路径名的文件
/Users/gustavo/Library/texmf/tex/latex/lstlang0.sty
(根据需要还创建中间目录)并将我的个人语言定义存储在此文件中。