如何安装新的列表语言定义?

如何安装新的列表语言定义?

我想扩展支持的语言列表列表环境来自列表包。我有一个定义 - 例如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/,要么直接放在该目录内,要么放在其子(子...子)目录中。可能需要创建相关目录(IEtex和/或tex/latex)。

例如,假设你决定使用你的个人 texmf 树。在我的系统上,

kpsewhich -var-value TEXMFHOME

返回

/Users/gustavo/Library/texmf

/Users/gustavo我的主目录在哪里):这意味着我应该创建一个具有以下完整路径名的文件

/Users/gustavo/Library/texmf/tex/latex/lstlang0.sty

(根据需要还创建中间目录)并将我的个人语言定义存储在此文件中。

相关内容