我应该将自己的 .sty 或 .cls 文件放在哪里,以使它们可供我的所有 .tex 文件使用?

我应该将自己的 .sty 或 .cls 文件放在哪里,以使它们可供我的所有 .tex 文件使用?

我知道如何定义一个包或一个类,但如何才能让它(对我自己)随时可用呢?

假设我有一个包文件commonstuff.sty(或myprettyclass.cls),我想将其包含在.tex我在计算机上创建的任何文件中。我应该把它放在哪里?我需要在其上运行某个安装程序吗,还是将其保存在某个文件夹中就足够了?

注意:我知道我可以将其放在与.tex,但这不是我想要的。我正在寻找一种“安装”包的方法集中地在我的计算机上。

答案1

您可以在 TeX 主目录下创建一个文件夹并将.sty文件放入其中。在命令提示符下使用此命令来找出位置:

kpsewhich -var-value=TEXMFHOME

在我的计算机上显示

C:/Users/stefan/texmf

但也可能位于~/texmf/Linux 或 Unix 计算机上。

根据下面 Arthur 的评论,按照 TeX 目录结构,你应该将文件放在子目录中~/texmf/tex/latex/commonstuff/,如 。这样做的好处是无需更新软件包数据库因为 TeX 会直接搜索您的个人树。如果您的主树中texmf有一个文件,您可以安全地删除它,因为 TeX 无论如何都不会使用它。(注意:这假设您的个人树位于本地文件系统上:具有远程安装的主文件夹的用户可能仍需要进行哈希处理。)ls-Rtexmf

关于 MiKTeX,请查看问题答案中的“安装 sty 或 cls 文件”部分如何在 MikTex(Windows)上手动安装软件包

然后,您可以验证将使用哪个文件:

kpsewhich filename.sty

这将显示 TeX 实现获取的文件的路径。

答案2

所有其他答案都涵盖得很好,但我认为稍微不同的版本可能会有所帮助。

告诉 TeX 一个新.sty文件有两个部分。首先,你必须把它放在“正确”的位置,其次你需要更新 TeX 用来查找文件的数据库。文件放置的位置取决于你的操作系统。假设你有一个标准安装,这可能是:

  • Windows 10(和 miktex)
    C:\Users\<user name>\Appdata\Local\MikTex\<number>\tex\latex\local\
  • Windows Vista/7C:\Users\<user name>\texmf\tex\latex\local\
  • Windows XPC:\Documents and Settings\<user name>\texmf\tex\latex\local\
  • Linux~/texmf/tex/latex/local/
  • Mac OS X/Users/<user name>/Library/texmf/tex/latex/local/

注意: local/ 文件夹可能不存在;在这种情况下,请继续创建它。

关于这一点,有几点需要注意。首先,在 Windows 上,位置的“用户”部分取决于语言。其次,我将你的主/用户文件夹表示为“ <user name>”:这显然取决于你的系统。我指示的文件夹可能不存在:你可能只有部分texmf、其中的一些部分或什么都没有。文件位置很重要,虽然你可以将文件放在里面,但texmf/tex/latex通常情况下,这样做是为了按包组织内容。该local文件夹是为安装在单个机器上的东西保留的。

让 TeX “知道”文件意味着运行一个程序来构建文件位置数据库。有图形界面可以执行此操作,但在所有操作系统上都有效的方法是使用命令提示符/终端并输入texhash。这将为您的树(位于您的主文件夹中的树)构建数据库。一旦创建了“哈希”,TeX 就应该能够找到您的文件。对于最近的 TeXLive 发行版,此步骤对于本地文件夹中的文件不是必需的。

答案3

正如 Arthur 所提到的,.sty或者.cls文件必须位于某个子目录中,tex\latex该子目录可以位于任何驱动器的任何目录中。

请参阅下面的屏幕截图,它显示了我的包和类的路径。

在此处输入图片描述

我会解释两种情况,注册到 MikTeX 和注册到 TeX Live。

注册到 MikTeX

打开Settings (Admin),选择Roots选项卡,然后添加我的路径E:\A\My LaTeX\MyLibrary

\tex\latex\misc请注意,不能包含尾随!

在此处输入图片描述

然后,选择General标签并按下Refresh FNDB按钮。

在此处输入图片描述

如果找不到,MiKTeX Options (Admin)则可能是安装了较新的版本,使用的是MiKTex Console。对于此版本,只需转到“包”选项卡并单击数据库图标即可。

注册 TeX Live

如何在与 TeX Live 安装不同的驱动器中注册我自己的包或类?

答案4

在 Linux 上,您可以选择任何您喜欢的目录,然后添加一行,例如

export TEXINPUTS=".:~/latex:"

到您的 .bashrc 文件(您可以添加多个目录,用冒号分隔。我认为您确实需要在开头使用“。”)。Windows 中可能存在类似的东西。我发现这更容易,因为它将“我的”东西与 texmf 树分开。如果您正在编写一个大包,这可能不是很好,但对于您只想在所有项目之间共享的一些小东西来说很方便。

相关内容