• R语言已解决
  • Quarto 每次编译 PDF 文档都会检查和升级 tlmgr 及 LaTeX 包,是 BUG 还是 Feature?

Cloud2016

updating tlmgr

updating existing packages

不知道编译进程中的这两步在干嘛?按照字面意思是要更新 tlmgr 管理器和所有已安装的 LaTeX 包,如果真是这样,这真的有点吓人!

我期待的是直接报错,给出消息找不到命令或找不到宏包。

    Cloud2016 此外,我本想用 fmtutil-sys --all 重新刷配置,但是提示 fmtutil-sys 命令找不到

    fmtutil-sys --all
    zsh: command not found: fmtutil-sys

    手动重新安装 texlive-scripts

    tlmgr install texlive-scripts 

    fmtutil-sys 就可以用了。

    我都是使用笨办法一劳永逸地解决这个问题:直接安装全集版 TeX Live,如 TinyTeX-2,texlive-full,或 MacTeX。

      nan.xiao 这个办法应该是最好的,省心省事。现在硬盘空间都不小,1-2 G 的多余空间可以浪费

        Cloud2016 TinyTeX-2 全家桶 比 texlive-full / MacTeX 那些全家桶能省一两 G 空间。不过就算装全家桶,也没法彻底一劳永逸,因为每年 TeX Live 三四月份时会更新、CTAN 也在更新中,而老版本的 TeX Live 无法从新一年的 CTAN 中安装或更新包,所以还有微小的可能性你需要每年重装一遍全家桶,不过一年折腾这么一回应该也还能忍受。

          yihui 我突然意识到,安装全家桶只是解决一部分的问题。如果有个宏命令敲错了或者忘了加载某个宏包,Quarto 应该像正常的编译 LaTeX 文档那样直接报 LaTeX 编译错误,而不是来升级我的 tlmgr 管理器和本地安装的 LaTeX 宏包。如果是本地安装的全家桶,那升级起来大概就是漫长的等待。P.S. 我本地从来没有安装全家桶,但安装的宏包也不少。

            Cloud2016 yihui 我就觉得可能是默认值问题,查了一下还真有这个选项,设置一下 latex-auto-install 好像就可以了。具体的逻辑是在 quarto-cli/src/command/render/latexmk/pdf.ts 实现的。

            POC:

            ---
            title: "Untitled"
            format:
              pdf:
                include-in-header:
                  - text: |
                      \usepackage{zzz}
                latex-auto-install: false
            ---
            
            ## Placeholder

            得到

            compilation failed- missing packages (automatic installed disabled)
            LaTeX Error: File `zzz.sty' not found.