在工作中,我在 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
.