tctcab 嗯……有可能。我每次都是删掉上一个,再装下一个。但保不齐藏在某个地方的什么东西没删干净……改天装个虚拟系统,干干净净做实验。

    dapengde 应该稍稍再坚持一下就好了,还是之前的思路,凡是字体问题都可以这样搜,然后把相应的包装上,至少可以解决 99% 的字体缺失问题

    tlmgr search --file --global "utmri8a.pfb"
    tlmgr.pl: package repository https://mirrors.tuna.tsinghua.edu.cn/CTAN/systems/texlive/tlnet (verified)
    times:
            texmf-dist/fonts/type1/urw/times/utmri8a.pfb
    tlgs.win32:
            tlpkg/tlgs/fonts/utmri8a.pfb
    
    
    tlmgr search --file --global "8r.enc"
    tlmgr.pl: package repository https://mirrors.tuna.tsinghua.edu.cn/CTAN/systems/texlive/tlnet (verified)
    context:
            texmf-dist/fonts/enc/dvips/context/q-8r.enc
    dvips:
            texmf-dist/fonts/enc/dvips/base/8r.enc
    txfonts:
            texmf-dist/fonts/enc/dvips/txfonts/tx8r.enc

    此外,我这整理了一个比较小功能又比较全的支持中文的 LaTeX 包的列表 TeXLive.pkgs 你可以都装上试一下,我想里面大多数包你都已经装好了

      Cloud2016 这个列表不错!于是我都装了:

      link <- 'https://raw.githubusercontent.com/XiangyunHuang/Thesis-Template-Bookdown/master/latex/TeXLive.pkgs'
      pkgs <- readLines(link)
      for(pkg in pkgs) tinytex::tlmgr_install(pkg)

      上面那两个缺失文件是装上了,现在的新问题是找不到 'utmri8a.mf':

      name = utmri8a, rootname = utmri8a, pointsize = mktexmf: empty or non-existent rootfile!
      
      kpathsea: Running mktexmf utmri8a.mf The command name is C:\Users\PengZhao\AppData\Roaming\TinyTeX\bin\win32\mktexmf Cannot find utmri8a.mf . I try ps2pk --> gsftopk --> ttf2pk --> hbf2gf. Cannot find utmri8a.tfm .
      
      kpathsea: Running mktexpk --mfmode / --bdpi 600 --mag 1+0/600 --dpi 600 utmri8a.pfb The command name is C:\Users\PengZhao\AppData\Roaming\TinyTeX\bin\win32\mktexpk kpathsea: Appending font creation commands to missfont.log. xdvipdfmx:fatal: Cannot proceed without .vf or "physical" font for PDF output... Output file removed.
      
      fwrite: Broken pipe xelatex.exe:
      
      Process exited with error(s)

      搜一下:

      > tinytex::tlmgr_search('utmri8a.tfm')
      tlmgr search --file --global "utmri8a.tfm"
      tlmgr.pl: package repository http://mirror.informatik.hs-fulda.de/tex-archive/systems/texlive/tlnet (not verified: gpg unavailable)

      没找到……

        dapengde 我搞不定了,一直重复不出来你的错误,我建议你只装一个 TinyTeX 然后专注在这个上面测试你的模板,遇到问题实在搞不定了,就吼 yihui

          dapengde 在用 R Markdown 的时候基本上不太可能需要用到 tlmgr_search(),因为这是 tinytex 会自动执行的事情。如果它自动找都找不到的话,那手动找应该也是找不到的。

          utmri8a 应该是跟 times 包有关。

          另外 tlmgr_install() 已经向量化了,tinytex::tlmgr_install(pkgs) 即可,不需要循环。

          TinyTeX 搞不定的 LaTeX 问题可能说明模板不太具备可移植性(比如写死了字体为宋体之类的)。

          1 年 后

          一直都是用TeXLive,最近玩bookdown发现得用TinyTeX,反正硬盘有空间,就让它装着。对于多数情况这个足够了。可惜最近一直被黄大@Cloud2016的那个elegantbook 模板给卡着,原因是elegantbook.cls 用到的字体比较特别。要么要有esint,要么要有mtpro2. 这个esint 不论我是在TeXLive 下或者TinyTeX下都装不到。mtpro2 在TeXLive 下我可以装好,但是不知道怎么给TinyTeX 用,看了谢大@yihui的博客和FAQ,也没有搞懂怎么装。还请谢大,黄大,和各位老师指导!谢谢!

            Fye elegantbook 模板后来没时间搞了,掉了链子,有很多特性还没有搬进来。但是只要把相关的宏包都装上,应该可以跑通,这是 LaTeX 宏包列表 <https://github.com/XiangyunHuang/ElegantBookdown/blob/master/latex/TeXLive.pkgs>

            esint 宏包应该有的,我能搜到

            tinytex::tlmgr_search('mtpro2.sty')
            tlmgr search --file --global "mtpro2.sty"
            tlmgr.pl: package repository http://mirror.lzu.edu.cn/CTAN/systems/texlive/tlnet (verified)
            > tinytex::tlmgr_search('esint.sty')
            tlmgr search --file --global "esint.sty"
            tlmgr.pl: package repository http://mirror.lzu.edu.cn/CTAN/systems/texlive/tlnet (verified)
            esint:
                    texmf-dist/tex/latex/esint/esint.sty

            你提到的 mtpro2 字体是商业字体,有轻量版 lite 需要自己去下载安装 <https://pctex.com/mtpro2.html>

              Cloud2016
              我记得tinytex可以自己搜索和安装缺少的latex包,这个是啥问题?

              • Fye 回复了此帖

                Cloud2016 搞定了。AppData/Roaming/TinyTeX 下面有个texmf_local 的文件夹,按照TeXLive 装字体进去就可以了。

                esint 的问题不是找不到pacakge 是找不到字。刚搜到原因。最新版的esint把字体删了。要么要把esint倒回去旧的版本1.2b。或者下载字体放到合适的位置。具体可以看缺 TFM 文件:LaTeX 字体包 esint 需从 v1.2c 降级到 v1.2b.

                elegantbook 看着确实不错,不过感觉还有不少小的问题,比如titlepage注释掉subtitle就会出错。
                bookdown的话做起来也挺费劲儿的,你这个模板我觉目前已经够用了。不过还是期待各位老师能给我们带来更好用的模板。😄

                谢谢黄老师!

                  tctcab 不是缺少LaTeX 包,是字体找不到。mtpro2 是要购买的,不过lite版其实用着也够。😄
                  LaTeX 字体的安装说简单也简单,实际对于新手还是有点复杂。我刚才是没有理解透彻 TinyTeX 的文件结构。现在已经手动装了两个字体,可以编译通过了。

                  Cloud2016 titlepage 的问题不是bookdown 模板的问题,是elegantbook.cls 自己的问题。一个解决办法就是修改class 文件。不改的话,在LaTeX下面可以把\maketitle 注释掉,自己设计titlepage。不知道bookdown 是不是也可以。

                    Fye 怎么安装指定版本的 LaTeX 宏包,我按照上面的提示仍然装不上 esint 字体文件, texhash 也没有用

                    我运行 elegantbook 官方模板报错,部分信息如下

                    [13This is METAFONT, Version 2.7182818 (TeX Live 2019/W32TeX) (preloaded base=mf)
                    
                    (d:/TinyTeX/texmf-dist/fonts/source/public/esint/esint10.mf)
                    ! Emergency stop.
                    <*> ...\mag:=1+57/600; nonstopmode; input esint10;
                    
                    Transcript written on esint10.log.
                    mf-nowin.exe --progname=mf --base=mf \mode:=ljfour; \mag:=1+57/600; nonstopmode; input esint10;
                    Failed to make gf font by METAFONT.
                    
                    kpathsea: Running mktexpk --mfmode / --bdpi 600 --mag 1+57/600 --dpi 657 ectt1000
                    
                    The command name is D:\TinyTeX\bin\win32\mktexpk
                    
                    kpathsea: Running mktexpk --mfmode / --bdpi 600 --mag 0+480/600 --dpi 480 manfnt
                    
                    The command name is D:\TinyTeX\bin\win32\mktexpk
                    
                    kpathsea: Running mktexpk --mfmode / --bdpi 600 --mag 1+0/600 --dpi 600 ectt1000
                    
                    The command name is D:\TinyTeX\bin\win32\mktexpk
                    
                    kpathsea: Running mktexpk --mfmode / --bdpi 600 --mag 1+0/600 --dpi 600 ectt0900
                    
                    The command name is D:\TinyTeX\bin\win32\mktexpk
                    
                    kpathsea: Running mktexpk --mfmode / --bdpi 600 --mag 0+480/600 --dpi 480 bbding10
                    
                    The command name is D:\TinyTeX\bin\win32\mktexpk
                    
                    kpathsea: Running mktexpk --mfmode / --bdpi 600 --mag 1+57/600 --dpi 657 esint10
                    
                    The command name is D:\TinyTeX\bin\win32\mktexpk
                    kpathsea: Appending font creation commands to missfont.log.
                    
                    xdvipdfmx:fatal: Cannot proceed without .vf or "physical" font for PDF output...
                    
                    No output PDF file written.
                    fwrite: Broken pipe
                    xelatex.exe:
                    • Fye 回复了此帖

                      Cloud2016 我是运行 mktexlsr, 然后 updmap-sys ,最后在运行一次mktexlsr. 可以直接双击bin 里面这个两个文件运行。

                      我也试了一下elegantbook 的官方模板,也有错误,不过跟你的不一样。

                        Fye 我试了,仍然没有 work 我放弃了,我看到最新的 elegantbook 模板最近又有很大变动,搞 LaTeX 的人太会在字体、版面上精雕细琢了,我目前无此精力跟着继续搞。以后闲下来也许会搞搞

                        • Fye 回复了此帖

                          最后想吐槽的是为啥要引入商业字体,为啥不把环境打包,为啥不测试,搞的我复现都是很困难的事情,我还怎么去用这个模板

                          • Fye 回复了此帖

                            Adobe 阅读器看到 PDF 文档的字体属性中,有这样的东西,这是些什么字体?也是这个文档生成的,当然是在我把 esint 注释掉之后才编译出 PDF

                            Cloud2016 绝对同意你的看法。 字体真的不应该预先设置好。一方面,用户不一定有。另一方面,即使有,用户也不已经觉得预设的就漂亮。应该是设置推荐字体,用户可以重设的。

                            esint 宏包的降级, 可以运行 tlmgr restore esint 51679。具体可以参见这个讨论 version 3.09 corrupts templates / mess up with font maps? #48.

                            安装esint那个字体,可能需要运行下面这个命令试试 tlgmr install texlive-fonts-recommends.
                            具体可以参见 stackExchange 上的讨论 Error in TeX Live – Font … not loadable: Metric (TFM) file not found