你好,谢谢你来过,
我对 Ubuntu 还很陌生,在安装 LaTeX 时遇到了一些问题。
在我提出所有反对意见之前,先介绍一下背景知识:首先,安装和使用 LaTeX 比较容易,但是当我需要一个我的安装中没有的软件包时(IEEEtran,来自 texlive-publishers,我认为),就这样,我遇到了第一个大障碍。
经过几个小时的搜索和其他操作后,我终于让它工作了;只需拍一些 .tex 文件,sudo pdflatex saidFile.tex
它就可以正常工作了。
然后我遇到了第二个大障碍:从 VScode 中尝试它。
所以我大部分时间都在 Windows 上工作,而我认为带有 Latex Workshop 扩展的 VScode 是人间天堂,它运行得很好,所以我试着让它在 Unix 上运行,结果……嗯,有些东西我不太理解或找不到,这就是我在这里的原因……对这一切感到抱歉。
所以问题是这样的:当我用 IEEEtran 编译文件时和sudo,它工作正常;但是当我尝试从 VScode 或控制台编译它时没有sudo,它不起作用,它告诉我 LaTeX 找不到该包。
This is pdfTeX, Version 3.14159265-2.6-1.40.21 (TeX Live 2020) (preloaded format=pdflatex)
restricted \write18 enabled.
entering extended mode
(./labInform.tex
LaTeX2e <2020-02-02> patch level 5
L3 programming layer <2020-06-18>
! LaTeX Error: File `IEEEtran.cls' not found.
Type X to quit or <RETURN> to proceed,
or enter new name. (Default extension: cls)
因此,我尝试以超级用户权限启动 VScode,但它告诉我这不正确,我可以理解为什么......有点。
所以是的...我不知道该做什么,也不知道在哪里搜索、搜索什么或如何做到这一点。
我对此深感抱歉,谢谢您。
答案1
您没有详细说明如何在系统上安装 TeX,因此很难诊断您的问题。
然而,你不应该跑步sudo latex
。 如果需要,则说明您的系统配置不正确。请texlive
在您的系统上安装所需的软件包,或者进行自定义安装。 在 Ubuntu 上,这可以是texlive-publishers
,或者直接安装texlive-full
。如果你安装了 vanilla TeX Live 并使用tlmgr
,它就在tlmgr
包中IEEEtran
。如果你使用 MikTeX ,它就在包中ieeetran
。
您应该能够使用 找到该文件kpsewhich IEEEtran.cls
。如果此命令运行但找不到该文件,请确保其父目录可供所有人读取和执行(sudo chmod 755 /usr/local/texlive/2020/texmf-dist/tex/latex/IEEEtran/
或它所在的任何位置)。如果该命令可以找到该文件但您无法使用 打开它more
,请将其设置为所有人可读(sudo chmod 644 /usr/local/texlive/2020/texmf-dist/tex/latex/IEEEtran/IEEEtran.cls
或它所在的任何位置)。如果您的 shell 找不到命令kpsewhich
本身,请确保将包含 TeX 二进制文件的目录添加到您的PATH
,并将文档添加到您的MANPATH
和INFOPATH
。我在名为 的文件中拥有以下内容/etc/profile.d/texlive.sh
:
PATH=/usr/local/texlive/2020/bin/x86_64-linux:$PATH
export PATH
INFOPATH=/usr/local/texlive/2020/texmf-dist/doc/info:$INFOPATH
export INFOPATH
MANPATH=/usr/local/texlive/2020/texmf-dist/doc/man:$MANPATH
export MANPATH
如果您进行自定义安装,我建议创建一个用户tex
(或者使用该bin
帐户)并运行安装和更新命令,例如,
sudo -u tex -g tex $(which tlmgr) update --self --all
然后运行所有命令除了从您自己的帐户安装(只是latex
,没有sudo
),但是当您安装时,您只授予安装程序写入 TeX 安装的权限,而不是完全的 root 访问权限。
更新
既然 OP 已经发布了答案,我想跟进一下他们剩下的一些问题。
您不需要以 root 身份安装 TeX Live,尽管这样做也可以。您可能不想这样做的原因是安全性:如果您以 root 身份安装,则每个软件包安装脚本都会运行sudo root
。您可以使用以下命令创建仅拥有 TeX 安装的新用户和组
sudo adduser --system --group --home-dir /usr/local/texlive tex
这将创建一个新的用户和组帐户,该帐户无法登录,并且仅拥有 TeX Live 目录。但是,您可以以 的身份运行命令sudo -u tex
。此帐户的唯一目的是运行 TeX 安装程序和更新。这样,他们只有读取和修改您的 TeX 发行版的权限。
完成此操作后,您需要创建 tex 拥有的本地 TeX 树,并确保只有 TeX 可以在那里添加和删除文件,但其他所有人都可以使用cd
它ls
。
sudo mkdir /usr/local/texlive
sudo chown tex:tex /usr/local/texlive
sudo chmod 755 /usr/local/texlive
(您描述chmod
为生成文件。但它的作用是设置文件权限。我使用老式的八进制代码,因为我是 UNIX 老手。这里相关的是 755 表示每个人都可以读取和执行文件,但只有您可以写入它。)
如果你已经拥有此目录,你可以删除它并重新开始,或者直接使用以下命令将所有权移交给 tex
chown -R tex:tex /usr/local/share/texlive/
现在,您可以将 TeX Live(作为 tex)安装到 TeX 拥有的这个新目录中。从您解压 TeX Live 安装程序的目录中:
chmod 755 install-tl
sudo -u tex -E ./install-tl
选项-u tex
表示以 tex 用户身份运行,-E
表示保留环境变量,例如LANG
确定语言。默认情况下,安装程序应将文件放在您刚创建的新目录中。/usr/local/texlive/
由于 tex 拥有此目录,因此它可以。
还有一些设置要做。首先,您需要将 TeX Live 目录添加到您的PATH
和MANPATH
环境INFOPATH
变量中,位于系统目录之前。从上面重新发布:您可以将以下内容保存到名为 的文件中/etc/profile.d/texlive.sh
,下次打开 shell 时它将加载。
PATH=/usr/local/texlive/2020/bin/x86_64-linux:$PATH
export PATH
INFOPATH=/usr/local/texlive/2020/texmf-dist/doc/info:$INFOPATH
export INFOPATH
MANPATH=/usr/local/texlive/2020/texmf-dist/doc/man:$MANPATH
export MANPATH
如果你exec bash -login
重新加载你的环境,latex --version
应该会给你pdfTeX 3.14159265-2.6-1.40.21 (TeX Live 2020)
。你还应该能够运行man latex
和info latex
。
更新 tex 安装的命令很长而且很烦人,但你可以创建一个容易记住的别名。编辑文件~/.profile
并在末尾添加以下行:
alias update-tex=`sudo -u tex -E $(which tlmgr) update --self --all`
下次打开命令提示符(或使用 刷新exec bash -login
)时,您可以通过键入 来更新update-tex
。
从 CTAN 安装非自由字体
如果你想安装,会遇到一些问题getnonfreefonts
来自 CTAN。您可能想将其安装到您的用户目录中,因为这是唯一可行的方法。 您想以--sys
而非 的身份进行安装--user
。以用户身份安装 8 位字体是一个陷阱。 这需要一点技巧,但确实有效。如果您以用户身份安装,安装程序将以updmap
用户身份运行,这将在您的用户目录中创建字体映射。这乍一看似乎有效,但它会向您隐藏系统映射,并且在您更新系统映射时不会更新,因此您的映射文件将越来越过时。
安装程序需要运行的命令是
sudo -u tex -E --preserve-env=PATH $(which texlua) install-getnonfreefonts
此命令创建一个 perl 脚本来安装字体,您可以使用它来运行
sudo -u tex -E --preserve-env=PATH /usr/local/texlive/2020/texmf-dist/scripts/getnonfreefonts/getnonfreefonts.pl --sys --all --refreshmap --http
安装其他本地文件
有时,您可能想要下载 TeX Live 软件包中没有的 TeX 文件,例如出版商的类文件或格鲁吉亚语的 Type 1 字体。通常,您需要将这些文件放在TEXMFLOCAL
( /usr/local/texlive/texmf-local/
) 的子目录中,而不是TEXMFHOME
( ~/texmf/
) 中。您可以使用 复制目录sudo -u tex cp -r
。手动安装新文件后,运行
sudo -u tex -E $(which texhash)
sudo -u tex -E $(which updmap-sys)
这确保您的索引和地图文件是最新的。
如果您只需要它们用于一个项目,那么您可以将它们复制到您的项目目录中。
安装和使用字体
您可以将新字体保存到 来为您的用户帐户安装~/.fonts/
,也可以将新字体保存到 来为所有人安装/usr/local/share/fonts/
。
您可能希望将 TeX 树添加到系统字体路径中。(或者甚至需要这样做,以便 XeTeX 能够始终找到它们。)执行此操作的文件是texlive-fontconfig.conf
,您可以通过在目录中创建指向它的符号链接来启用它/etc/fonts/conf.d/
:
sudo ln -s /usr/local/texlive/2020/texmf-var/fonts/conf/texlive-fontconfig.conf /etc/fonts/conf.d/09-texlive2020.conf
我还创建了一个相同格式的文件来索引我的 TEXMFLOCAL 树中的字体。我将以下内容保存为/etc/fonts/conf.d/09-texmf-local.conf
:
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<dir>/usr/local/texlive/texmf-local/fonts/opentype</dir>
<dir>/usr/local/texlive/texmf-local/fonts/type1</dir>
<dir>/usr/local/texlive/texmf-local/fonts/truetype</dir>
</fontconfig>
我给这些文件指定了一个较小的数字,例如09
,这样它们将在系统目录之前被搜索。我的 TeX 目录中的字体通常更为最新。
XeTeX 和 LuaTeX 都会在你下次请求它不认识的字体时自动刷新数据库,但你可以手动让它们这样做
sudo fc-cache -fsv
luaotfload-tool --update --local --prefer-texmf
其他可选内容
有些人建议制作一个虚拟apt
包,以防止自动安装第二个版本texlive
。我个人没有遇到过这个问题。
答案2
好吧,对于遇到类似问题的人来说,我有一个很棒的答案。非常感谢@Davislor 之前的回答和帮助。我正在使用 Ubuntu 20.04。
我将尝试划分问题,因为所有帮助过我的东西都在不同的网站上,针对不同的问题,我将尝试给出所有参考资料以及页面和用户的功劳。
我认为这不属于原始问题,或者它属于...我不知道,也许这是一种安装指南......但我开始了。
我从清除和卸载我拥有的 LaTeX 开始,所以这是从头开始......
安装 LaTeX
对于安装,我只需按照最多的官方安装,但它没有对 Linux(在本例中为 Ubuntu)进行太多阐述;我tl-unx.tar.gz
从官方网站下载了,这里,unzip
并使用 生成 Perl 脚本chmod
,如下所示:
chmod +x install-tl
然后,我以超级用户的身份启动了该脚本,尽管官方页面上是这样说的:
我认为这可能是一个问题,但除此之外,脚本无法安装 LaTeX,正如页面所建议的那样,我也不太清楚如何以其他方式安装。我做了一些其他重要的事情......我不知道这是好事还是坏事,我遵循了@Andrew Stacey 关于的评论umask
,你可以看到评论这里。
然后,我只是按照脚本说明进行操作,但我选择的软件包使我的 LaTeX 安装重量约为 1.6GB,因此它是一个“自定义”安装。
所以这里...我认为如果您使用其他配置或其他东西,LaTeX 已完全安装。由你决定。
有些东西非常,非常重要的是正确设置 LaTeX 的 PATH 变量,官方安装指南会告诉你如何操作。如果你以后想独立安装软件包,这会派上用场。
安装单个软件包
安装后,我认为一切都正常,我尝试在没有超级用户权限的情况下编译我想要的文件(带有 的文件\documentclass[conference]{IEEEtran}
),正如@Davislor 所说,一切都成功了!或者说,现在的问题不同了,它向我展示了另一个问题,这个问题困扰了我一段时间;它没有找到包float.sty
。
我不太明白这一点,但是当我安装 LaTeX 时这说明,一切似乎都运行正常,但我发现一个大问题:这个问题。我以为更新 PATH 变量会起作用,但是没有。
我有点担心自己遇到了与该float.sty
软件包相同的问题,但我还是尝试了一下,并且该实用程序解决了问题tlmgr
。但是,又出现了另一个问题;从 tlmgr 安装包时出现权限问题。
按照说明那发布和这个,帮我解决了所有问题。所以现在我可以安装任何包,如下所示:
sudo env PATH="$PATH" tlmgr install <name of package>
VScode 运行良好。
最后,我为我所有的指责感到抱歉,并感谢@Davislor鼓励我跳进这个兔子洞。我希望这能帮助任何遇到与我相同问题的人。