从关闭脚本调用的 pdflatex/lualatex 找不到已安装的软件包

从关闭脚本调用的 pdflatex/lualatex 找不到已安装的软件包

在工作中,我在 Ubuntu 14.04.1 机器上设置了一个小备份脚本。该脚本将我的机器备份到外部硬盘驱动器。完成此操作后,它将 LaTeX 项目复制到我的 Dropbox 并进行编译。这个项目是我工作的某种日志。

我知道这是一个相当非常规的用例,我可以复制源代码或将其推送到 git 存储库,但首先 git 有点大材小用,其次已经有两个实例让我很高兴拥有当我因为 gnome 无法启动而不得不启动 tty shell 时,它以 pdf 形式在我的手机上显示。

现在的问题是,由于某种原因 pdflatex 和 lualatex 都告诉我他们找不到这些.sty文件。备份脚本如下:

#!/bin/bash

# .... some system backup code ....

## sync linux setup document to Dropbox
# remove .pdf in order to guarantee that project is compiled
rm /home/user/Documents/LaTeX/logBook/logBook.pdf
# compile project in origin 
make -C /home/user/Documents/LaTeX/logBook/ >> /home/user/Documents/LaTeX/logBook/makeLog
# copy files to destination
cp -rp /home/user/Documents/LaTeX/logBook/ /home/wright/Dropbox

我的Makefile包含以下几行:

SHELL=bash
TARGET=linuxSetup.pdf
FLAGS= --shell-escape
SRC= ./*.tex ./header/*.tex  ./chapters/*.tex ./references/*.bib ./titlepage/*.tex 
TIKZ= ./tikz/*.tex
LL= pdflatex


all: $(TARGET)

$(TARGET): $(TARGET:%.pdf=%.tex) $(SRC) $(TIKZ)
    @$(LL) $(FLAGS) $<
#   makeglossaries $(TARGET:%.pdf=%"")
#   makeindex -s headingsStyle.ist $(TARGET:%.pdf=%.idx)
#   bibtex $(TARGET:%.pdf=%"")
    @$(LL) $(FLAGS) $<
    @$(LL) $(FLAGS) $<

备份脚本放置在/etc/init.d/backup并包含到 的符号链接/etc/rc0.d/S01Backup

脚本很简单,但他们仍然找不到文件.sty。我尝试排除这些.sty文件以查明问题是否是由特定文件引起的,但无论我排除了多少文件,总会有更多编译器无法找到的文件。我切换了编译器,但这似乎也不是问题。而且我还通过 root 用户或作为 root 用户执行了完整的备份脚本sudo,这两者都工作得很好,没有任何错误。

我缺少什么?

编辑: 这是输出的最后一位:

(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amstext.sty
(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty))
(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsbsy.sty)
(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsopn.sty))
(/usr/share/texlive/texmf-dist/tex/latex/cite/cite.sty)
(/usr/share/texlive/texmf-dist/tex/latex/mh/empheq.sty
(/usr/share/texlive/texmf-dist/tex/latex/mh/mhsetup.sty)
(/usr/share/texlive/texmf-dist/tex/latex/mh/mathtools.sty
(/usr/share/texlive/texmf-dist/tex/latex/tools/calc.sty)))
(/usr/share/texlive/texmf-dist/tex/latex/etex-pkg/etex.sty)
(/usr/share/texlive/texmf-dist/tex/latex/fancybox/fancybox.sty
Style option: `fancybox' v1.4 <2010/05/15> (tvz)
) (/usr/share/texlive/texmf-dist/tex/latex/float/float.sty)

! LaTeX Error: File `floatflt.sty' not found.

Type X to quit or <RETURN> to proceed,
or enter new name. (Default extension: sty)

Enter file name: 

有问题的文件floatflt.sty位于 texlive 安装目录中/usr/local/texlive/2015/texmf-dist/tex/latex/floatflt。然而,它在上面找到的其他软件包位于/usr/share/texlive/texmf-dist/tex/latex/<packagename>.

答案1

您有两个 texlive 安装。一种由系统 (Ubuntu)/usr/share/texlive/和用户安装的/usr/local/texlive/2015/texmf-dist/tex/latex.

在您的关闭脚本中,环境变量未调整,因此使用了错误的 texlive 安装。

尝试/usr/local/texlive/2015/bin/x86_64-linux/pdflatex直接调用或PATH相应地调整环境变量。

floatflt.sty过去存在一些许可证问题。这可能就是它不包含在 Ubuntu 的 texlive 安装中的原因。你可以尝试改成wrapfig.

相关内容