Cloud2016 yihui 有点诡异。tlmgr 的升级我没有做,改天试试是不是这个问题。

话说人们对 pdf 和 doc 格式的依赖也是属于历史惯性吧,因为看上去就像打印出来的。现在无纸化越来越成熟,根本不需要打印,慢慢也就淘汰了吧。

我们痛苦地制作出适合打印的pdf,然后痛苦地在kindle上读pdf……何苦……

    dapengde 核心问题在于需不需要“页”的概念。对短文档来说无所谓,是不是分成两三页都可以很快看完。问题只是长文档,如果分页的话,读起来让人不那么绝望,随时知道进度条。至于是否打印,与阅读习惯有关,而且翻一本纸书比翻一本电子书稍微容易一点。当然,我也觉得分页排版主要还是历史惯性的原因。

    dapengde

    windows下测了一下,pdf通过tinytex装了一堆库之后编译成功,
    一开始是缺ctex库自动安装失败,后来tinytex::tlmgr_update()升级之后就可以了。
    当然我还升级rmarkdown到github的最新版本不知道有木有关系…

    @Cloud2016 @tctcab 我把 tlmgr, rmakrdown, bookdown 全都升级了,故障依旧:

    • bookdown-ucas 不能成功编译,显示 ! LaTeX Error: \CJKunderlinecolor undefined.log 文件)。

    • bookdown-pku 貌似编译完了,但没有生成 pdf 文件(log 文件)。我留意到出现了个 missfont.log 文件,不明白是不是缺少了什么字体。

    看大家用的系统比较新,怀疑是不是我的 windows 7 的问题?

    > devtools::session_info()
    Session info ------------------------------------------------------------------------------------
     setting  value                                              
     version  R version 3.5.1 (2018-07-02)                       
     system   x86_64, mingw32                                    
     ui       RStudio (1.1.456)                                  
     language (EN)                                               
     collate  Chinese (Simplified)_People's Republic of China.936
     tz       Europe/Berlin                                      
     date     2018-09-15                                         
    
    Packages ----------------------------------------------------------------------------------------
     package    * version date       source                            
     backports    1.1.2   2017-12-13 CRAN (R 3.5.0)                    
     base       * 3.5.1   2018-07-02 local                             
     bookdown   * 0.7.18  2018-09-15 Github (rstudio/bookdown@b657ab3) 
     compiler     3.5.1   2018-07-02 local                             
     curl         3.2     2018-03-28 CRAN (R 3.5.1)                    
     datasets   * 3.5.1   2018-07-02 local                             
     devtools     1.13.6  2018-06-27 CRAN (R 3.5.1)                    
     digest       0.6.17  2018-09-12 CRAN (R 3.5.1)                    
     evaluate     0.11    2018-07-17 CRAN (R 3.5.1)                    
     git2r        0.23.0  2018-07-17 CRAN (R 3.5.1)                    
     graphics   * 3.5.1   2018-07-02 local                             
     grDevices  * 3.5.1   2018-07-02 local                             
     htmltools    0.3.6   2017-04-28 CRAN (R 3.5.1)                    
     httr         1.3.1   2017-08-20 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                             
     R6           2.2.2   2017-06-17 CRAN (R 3.5.1)                    
     Rcpp         0.12.18 2018-07-23 CRAN (R 3.5.1)                    
     rmarkdown    1.10.13 2018-09-15 Github (rstudio/rmarkdown@df4ec91)
     rprojroot    1.3-2   2018-01-03 CRAN (R 3.5.1)                    
     rstudioapi   0.7     2017-09-07 CRAN (R 3.5.1)                    
     stats      * 3.5.1   2018-07-02 local                             
     stringi      1.2.4   2018-07-20 CRAN (R 3.5.1)                    
     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

      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 的文件结构。现在已经手动装了两个字体,可以编译通过了。