dapengde

ucas的模板试了一下,跟你的报错一样,注释掉
https://github.com/pzhaonet/bookdown-ucas/blob/master/Style/ucasthesis.cls#L122
这一行之后可以编译成功。

看代码猜测是把下划线设为黑色不过看pdf里下划线都正常嘛?

Session info --------------------------------------------------------------------------------
 setting  value                       
 version  R version 3.5.1 (2018-07-02)
 system   x86_64, mingw32             
 ui       RStudio (1.1.419)           
 language (EN)                        
 collate  English_United States.1252  
 tz       Australia/Brisbane          
 date     2018-09-16                  

Packages -----------------------------------------------------------------------------------
 package   * version date       source                            
 base      * 3.5.1   2018-07-02 local                             
 bookdown    0.7     2018-02-18 CRAN (R 3.5.1)                    
 compiler    3.5.1   2018-07-02 local                             
 datasets  * 3.5.1   2018-07-02 local                             
 devtools    1.13.6  2018-06-27 CRAN (R 3.5.1)                    
 digest      0.6.16  2018-08-22 CRAN (R 3.5.1)                    
 evaluate    0.11    2018-07-17 CRAN (R 3.5.1)                    
 graphics  * 3.5.1   2018-07-02 local                             
 grDevices * 3.5.1   2018-07-02 local                             
 htmldeps    0.1.1   2018-09-15 Github (rstudio/htmldeps@c1023e0) 
 htmltools   0.3.6   2017-04-28 CRAN (R 3.5.1)                    
 knitr       1.20    2018-02-20 CRAN (R 3.5.1)                    
 magrittr    1.5     2014-11-22 CRAN (R 3.5.1)                    
 memoise     1.1.0   2017-04-21 CRAN (R 3.5.1)                    
 methods   * 3.5.1   2018-07-02 local                             
 Rcpp        0.12.18 2018-07-23 CRAN (R 3.5.1)                    
 rmarkdown   1.10.13 2018-09-15 Github (rstudio/rmarkdown@df4ec91)
 stats     * 3.5.1   2018-07-02 local                             
 stringi     1.1.7   2018-03-12 CRAN (R 3.5.0)                    
 stringr     1.3.1   2018-05-10 CRAN (R 3.5.1)                    
 tools       3.5.1   2018-07-02 local                             
 utils     * 3.5.1   2018-07-02 local                             
 withr       2.1.2   2018-03-15 CRAN (R 3.5.1)                    
 xfun        0.3     2018-07-06 CRAN (R 3.5.1)                    
 yaml        2.2.0   2018-07-25 CRAN (R 3.5.1)                    

    dapengde missfont.log 文件

    可以这样查看缺失字体

    tlmgr search --file --global "qtmb.pfb"
    tlmgr.pl: package repository https://mirrors.tuna.tsinghua.edu.cn/CTAN/systems/texlive/tlnet (verified)
    tex-gyre:
    	texmf-dist/fonts/type1/public/tex-gyre/qtmb.pfb

    把 tex-gyre 安装再试试

      Cloud2016 tex-gyre 安装了,仍然编译不成功。看起来仍然是字体缺失的问题。

      tctcab 哈哈,对,注释掉这一行确实可以跳过这一步了,然而又遇见了跟 bookdown-pku 同样的问题(见log 文件):字体。

      这两个模板都表现为:.tex 文件已经顺利生成了,并被 bookdown 移至默认的 _book/文件夹,但 pdf 文件没生成,而 bookdown 误以为生成了,想打开却打不开:

      Output created: _book/pku.pdf
      Error in tools::file_path_as_absolute(output_file) : 
        file '_book/pku.pdf' does not exist

      @yihui 我觉得 bookdown 在这里给的上述信息提示不大对头。

      对于上述字体问题,我在 TeXStudio 下面编译了一下 bookdown 生成的 .tex文件,得到的错误提示是:

      xdvipdfmx:fatal: Could not find encoding file "8r.enc". Output file removed.
      
      fwrite: Broken pipe xelatex.exe:
      
      Process exited with error(s)

      于是就下载了个"8r.enc"文件,再编译,得到新的错误提示:

      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)

      里面稀里糊涂的东西太多,我目前止步于此了。

        dapengde

        看之前记录,是不是混装了多个latex库导致的啊…latex多了说不定会互相打架。

          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 的官方模板,也有错误,不过跟你的不一样。