![无法使用 texlive 在 Ubuntu 上的 devops 中运行自己的样式文档](https://linux22.com/image/408351/%E6%97%A0%E6%B3%95%E4%BD%BF%E7%94%A8%20texlive%20%E5%9C%A8%20Ubuntu%20%E4%B8%8A%E7%9A%84%20devops%20%E4%B8%AD%E8%BF%90%E8%A1%8C%E8%87%AA%E5%B7%B1%E7%9A%84%E6%A0%B7%E5%BC%8F%E6%96%87%E6%A1%A3.png)
我正在尝试使用 Linux 发行版在 DevOps 中设置管道,以使用 texlive 构建 LaTeX 文档。我安装了 texlive,并确认它可以正常工作。但是,我的 latex 文档使用我们的样式文档在所有文档中具有相同的布局,这就是我的问题所在。无论我做什么,texlive 都找不到我的 .sty 文件。
我尝试在 TEXMFHOME 文件夹中注册我的 sty 文件,如以下条目所述:我应该将自己的 .sty 或 .cls 文件放在哪里,以使它们可供我的所有 .tex 文件使用?,但失败了。这是我尝试的脚本:
#!/bin/sh
#Creating comments
#setting TEXMFHOME
texmfhome=$(kpsewhich -var-value=TEXMFHOME)
echo texmfhome: $texmfhome
echo Creating TEXMFHOME/dxpc:
mkdir -p -v $texmfhome/dxcpc
echo Coping sty document
cp -v pathtostydocument/mystyle.sty $texmfhome/dxcpc/mystyle.sty
echo texhash $texmfhome/dxcpc
texhash --verbose $texmfhome/dxcpc
echo Verifying installation:
cd $texmfhome
kpsewhich mystyle.sty
这种方法的奇怪之处在于 TEXMFHOME 指向 /home/vsts/texmf,但 texmf 文件夹不存在,因此我先创建它,并将我的样式文件夹放在名为 dxcpc 的子文件夹中。根据网上的各种页面,这应该意味着我可以跳过 texhash 调用,尽管我无论如何都会这样做。
然后我发现一个 SO 条目,其中指出我可以尝试使用路径导入样式文档:https://stackoverflow.com/questions/5993965/include-sty-file-from-a-super-subdirectory-of-main-tex-file。我的 latex 文件树是这样的:
[Latex]
- [Extensions]
- [Ext1]
- mainpage.tex
- mystyle.sty
因此我尝试从以下方式更改我在 Latex 中的使用包调用:
\usepackage{myStyle}
到
\usepackage{../../myStyle}
但是 texlive 以同样的方式失败了,尽管出现消息!LaTeX 错误:未找到文件“../../mystyle.sty”。
然后,我还尝试将样式文档移动到与我正在构建的 tex 文档相同的文件夹中。但这以同样的方式失败了。我在这 3 种情况下遇到的错误如下:
/bin/bash --noprofile --norc /home/vsts/work/_temp/1a5a7e0d-09c3-4a75-b462-e2144e715abd.sh
Build Clients Tools readme.txt Starting pdflatex Build Clients Tools readme.txt
This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/Debian) (preloaded format=pdflatex)
restricted \write18 enabled.
entering extended mode
(/pathtolatex/Extensions/Ext1/mainpage.tex
LaTeX2e <2017-04-15>
Babel <3.18> and hyphenation patterns for 3 language(s) loaded.
(/usr/share/texlive/texmf-dist/tex/latex/base/report.cls
Document Class: report 2014/09/29 v1.4h Standard LaTeX document class
(/usr/share/texlive/texmf-dist/tex/latex/base/size10.clo))
! LaTeX Error: File `mystyle.sty' not found.
Type X to quit or <RETURN> to proceed,
or enter new name. (Default extension: sty)
Enter file name:
! Emergency stop.
<read *>
Transcript written on "mainpage.log".
Build Clients mainpage.log EGPaymentSolution Tools readme.txt Done pdflatex. Build Clients mainpage.log Tools readme.txt
Finishing: Build mainpage
当我尝试在 Windows 中使用 MiKTeX 使用方案 2 和 3 构建文档时,没有任何问题,系统按预期构建。如果我删除样式文档并在 DevOps 系统中构建,它运行起来没有问题。在我尝试过的任何情况下,它都不会接受样式文档,我还没有弄清楚为什么或者是否有其他方法可以让它工作。
我在网上查看了一下,想到如果我不将样式文档作为包包含,我可以直接包含它。所以我将导入改为
\输入{../../myStyle.sty}
我的 Windows 上的 miktex 发行版按预期进行了编译,但是 texlive 仍然无法找到该文件:
LaTeX Error: File `../../myStyle.sty' not found.
我开始怀疑我是否可能对 ubuntu 及其执行 texlive build 命令的方式存在更深层次的问题。目前看来它可以很好地获取目标文件,但随后它开始从我的 tex 文档位置以外的其他基本位置进行构建,然后它找不到所需的资源。
我一直在研究 kpathsea 的文档。我读了几页,Tex 在需要查找文件时会将该任务委托给 kpathsea。然后它会尝试查找该文件。我确信我需要以某种形式的路径正确配置它,并且我仍在通过互联网阅读以找出我需要在哪里执行此操作。配置文件有点复杂,但我找到了一些我目前正在研究的页面:
https://www.tug.org/texinfohtml/kpathsea.html#Path-searching
http://kirste.userpage.fu-berlin.de/chemnet/use/info/kpathsea/kpathsea_2.html