如题,在我的TL2025中,lshort-zh-cn的子宏包位于windows11上的如下位置:
C:\texlive\2025\texmf-dist\doc\latex\lshort-chinese\src
但却无法直接被调用
\documentclass{book}
\usepackage{lshort-zh-cn-style}
\begin{document}
haha 你好
\end{document}! LaTeX Error: File `lshort-zh-cn-style.sty' not found.
Type X to quit or <RETURN> to proceed,
or enter new name. (Default extension: sty)
Enter file name: 而类似的,exam-zh提供的子宏包位于如下的路径:
C:\texlive\2025\texmf-dist\tex\latex\exam-zh
可以直接被调用
\documentclass{ctexbook}
\usepackage{exam-zh-question}
\begin{document}
\begin{question}
是个问题
\end{question}
\end{document}kpathsea默认会在texmf的哪些路径下搜寻.sty和.cls?\texlive\2025\texmf-dist\doc\latex不在而\texlive\2025\texmf-dist\tex\latex在?kpathsea可识别的路径?设置 TEXINPUTS 环境变量,.tex .sty 这类文件都在 $TEXMF/tex// 目录里查找,而 TeX 文档的位置在 $TEXDOCS ($TEXMF/doc//) 这个变量里(texmf.cnf 的变量,不是环境变量)。
cmd:
set TEXINPUTS=;$TEXDOCS
powershell:
$env:TEXINPUTS=';$TEXDOCS'不过最好不要设置 $TEXDOCS 来编译文档,因为这里的目录包含许多配置文件(比如 hyperref.cfg,你设置上面的环境变量再用 xelatex 编译就会发现报错),会出现什么完全不能预测。
可以先修改 TEXINPUTS 然后用 kpsewhich 找到所需的文件,只用特定目录一般问题不大:
set TEXINPUTS=;$TEXDOCS
kpsewhich lshort-zh-cn-style.sty
% 注意要先清除
set TEXINPUTS=
set TEXINPUTS=;$TEXMFDIST/doc/latex/lshort-chinese//
xelatex main.tex可以查看 texdoc kpathsea 文档了解更多内容。
是的,前者作为「文档」的附属,似乎默认不会被
LaTeX搜寻到...如果我希望在「电脑的everywhere」就能直接调用
lshort-zh-cn-style.sty,而不需要把其放到当前的项目目录,是否什么好办法让kpathsea找到lshort-zh-cn-style.sty所在的路径吗?@u70550 雾月大佬的解释应该是咱简中圈里最专业详细的了。补充个小小的猜测,就是对于tex路径下的宏包们,存在一个索引,其作用是抓大放小。比如这个exam-zh,索引的作用是抓
.cls而放过.sty;至于那些本身只有一个.sty的宏包,没有更小的可以放走,就索引.sty文件了。那么是不是真这样呢