我知道如何定义一个包或一个类,但如何才能让它(对我自己)随时可用呢?
假设我有一个包文件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-R
texmf
关于 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/7
C:\Users\<user name>\texmf\tex\latex\local\
- Windows XP
C:\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
答案4
在 Linux 上,您可以选择任何您喜欢的目录,然后添加一行,例如
export TEXINPUTS=".:~/latex:"
到您的 .bashrc 文件(您可以添加多个目录,用冒号分隔。我认为您确实需要在开头使用“。”)。Windows 中可能存在类似的东西。我发现这更容易,因为它将“我的”东西与 texmf 树分开。如果您正在编写一个大包,这可能不是很好,但对于您只想在所有项目之间共享的一些小东西来说很方便。