![查找 .sty 文件的目录路径](https://linux22.com/image/347018/%E6%9F%A5%E6%89%BE%20.sty%20%E6%96%87%E4%BB%B6%E7%9A%84%E7%9B%AE%E5%BD%95%E8%B7%AF%E5%BE%84.png)
我正在尝试将subfloat.sty
文件添加到我的 LaTeX 搜索路径。为了找到该路径,我执行了:
kpsewhich -var-value=TEXMFHOME
正如预期的那样,
/主页/最大/texmf
但是,没有与该(看似空的)路径关联的子目录,我甚至无法 cd~/texmf
或将文件复制到此目录(因此,我无法将文件移动.sty
到任何子目录中)。但是,我可以成功运行 LaTeX,包括各种其他软件包而不会出现错误,因此显然它在某个目录路径中寻找并找到它们,只是不是指示的那个。
有人对如何解决这个问题有什么建议吗?
答案1
该包subfloat.sty
应该添加到 LaTeX 搜索路径中,例如,如果您有一台 openSUSE Linux 机器,通常会在以下位置找到它:
/usr/share/texmf/tex/latex/subfloat/
和/或
$HOME/texmf/tex/latex/subfloat/
。
如果您从未手动将仅用户 max 的软件包添加到 LaTeX 发行版中,则该目录~/texmf
不应存在。此外,如果您没有将任何其他路径添加到TEXMFHOME
,则包含 LaTeX 软件包的所有文件夹都应分组到 中/usr/share/texmf/tex/latex
。
变量TEXMFHOME
和你的TEXMFDIST
定义在:
max@hostname ~: $ echo `kpsewhich texmf.cnf`
其结果应为/etc/texmf/web2c/texmf.cnf
。
现在,如果以下 bash 脚本的结果是一条显示单词 Yes 或单词 Nes 的消息(要执行 bash 脚本:将其保存到名为 的文件中compare.sh
,通过 授予其适当的权限chmod +x compare.sh
并通过 执行它./compare.sh
):
if grep -q "TEXMFDIST = /usr/share/texmf" `kpsewhich texmf.cnf`; then
if grep -q "TEXMFHOME = {~/texmf" `kpsewhich texmf.cnf`; then
echo "Yes"
else
echo "Nes"
fi
else
echo "No"
fi
那么您可以尝试按照以下步骤操作:
- 从以下网址下载 subfloat 软件包CTAN:目录 macros/latex/contrib/subfloat(需要 wget)
- 打开包装
subfloat.zip
; - 运行脚本
subfloat.ins
; - 复制
subfloat.sty
到你的 LaTeX 搜索路径; - 或者,复制文档目录中的文档;
- 更新你的 LaTeX 发行版。
max@hostname ~: $ wget mirrors.ctan.org/macros/latex/contrib/subfloat.zip # download link for subfloat, if you don't trust this, you can download it manually
max@hostname ~: $ unzip subfloat.zip
max@hostname ~: $ cd subfloat
max@hostname ~/subfloat: $ latex subfloat.ins
max@hostname ~/subfloat: $ sudo mkdir /usr/share/texmf/tex/latex/subfloat
max@hostname ~/subfloat: $ sudo mkdir -p /usr/share/texmf/doc/subfloat
max@hostname ~/subfloat: $ sudo cp subfloat.sty /usr/share/texmf/tex/latex/subfloat/
max@hostname ~/subfloat: $ sudo cp subfloat.pdf /usr/share/texmf/doc/subfloat
max@hostname ~/subfloat: $ sudo texhash # update your LaTeX distribution