在安装 TeX 包的过程中,运行很久(如下),我估计主要是网速问题,以前使用 TeXlive 或 MikTeX 时候,都自己先设定就近的仓库,如 <https://mirrors.tuna.tsinghua.edu.cn/CTAN/>,再安装都是很快的,在 tinytex 包中是否实现了这个?

library(tinytex)
tlmgr_search('/framed.sty')  # search for framed.sty
tlmgr_install('framed')

    Cloud2016 暂时没有实现,不过这是个好想法。安装 TinyTeX 之前应该让用户能自己选择一个镜像。

    既然你已经安装完了,你可以事后设定 CTAN 镜像,比如:

    tinytex::tlmgr(
      c('option', 'repository', 'https://mirrors.tuna.tsinghua.edu.cn/CTAN/systems/texlive/tlnet')
    )

    在这之后再安装包就会快很多了。

      yihui 那就先玩虚拟机。我眼睛不知是有啥毛病,盯苹果的显示屏反而受不了。

      参考文献问题,我装了 devtools::install_github(('rstudio/rmarkdown@feature/tinytex')),但只要在index.Rmd 的 yaml 声明里带扩展名如bibliography: [book.bib],就会出问题:用 bookdown + CTeX 编译出来的pdf里参考文献是问号。只要改成 bibliography: [book] 就好了。

      不过,既然没有别人反馈这个问题,那说不定是我电脑有啥毛病。我懒得理了,反正快换电脑了。

        dapengde CTeX 和 TinyTeX 二者如果都安装了,那么只能有一者在 PATH 环境变量上。你可以检查一下 Sys.getenv('PATH')。如果你只安装了 CTeX 而没装 TinyTeX 而跑不出参考文献来,那么这问题就诡异了,因为我无法重现,你只能自己排错(例如 debug(tinytex::: tweak_aux) 然后在交互式环境下跑 tinytex::latexmk()),相关的扩展名自动处理在这一行:

        https://github.com/yihui/tinytex/blob/ad2e0fa6b/R/latex.R#L161

        Cloud2016 注意我上面用的是 HTTP 链接,如果要用 HTTPS,需要有 gpg 支持,参见 FAQ 12

          yihui 移动 TinyTeX 位置,找不到字体了

          • 将 TinyTeX 默认存放位置 %APPDATA%\TinyTeX 移动到D盘,即 D:\TinyTeX,然后执行
            "D:\TinyTeX\bin\win32\tlmgr" path add

          • 安装几个常用字体 tinytex::tlmgr_install(c('sourcesanspro','sourcecodepro','sourceserifpro'))

          • fc-cache -f -v 刷新字体缓存,问题是缓存不到 D:\TinyTeX\texmf-dist\fonts 目录下的字体,以前使用 TeXLive 没这问题,我知道有个笨办法,挨个找到字体文件,手动安装到 C:\Windows\Fonts,有没有好点的办法?

          PS: 将目录 D:\TinyTeX\texmf-dist\fonts 添加到当前用户的 Path 路径上也不管用

          fc-cache -f -v
          Note that it needs some time to create caches,
          especially if there are many large font files.
          Wait with patience.
          
          C:/Windows/fonts: caching, new cache contents: 850 fonts, 0 dirs
          C:/Users/XiangYun/AppData/Local/Temp/RtmpkNFfPn/install-tl-20171205/TinyTeX/texmf-dist/fonts/opentype: skipping, no such directory
          C:/Users/XiangYun/AppData/Local/Temp/RtmpkNFfPn/install-tl-20171205/TinyTeX/texmf-dist/fonts/truetype: skipping, no such directory
          D:/TinyTeX/texmf-var/fonts/cache: cleaning cache directory
          fc-cache: succeeded

            yihui 没有起作用,还是扫的 C:/Users/XiangYun/AppData/Local/ 目录,如上

              yihui 1. 但是 fc-list :lang=en-us | sort > D:/en.txt 保存的 txt 文件里还是找不到我安装的字体,也就没法在文中调用\setmainfont{Source Sans Pro}

              1. 关于参考文献的引用,我发现tinytex::latexmk('manual.tex', engine = 'xelatex', bib_engine = 'bibtex')并未达到下面依次执行的效果
              • xelatex manual.tex
              • bibtex manual 注意不是 bibtex manual.tex
              • xelatex manual.tex
              • xelatex manual.tex

              manual.tex 文件 下载

                yihui 确实很诡异。为了简化问题,我把 tinytex、TinyTeX、CTeX 都卸载了,然后仅重装 CTeX,没装 TinyTeX,仍然没解决。不管是在 bookdown 里,还是用别的编辑器例如 TeXStudio,都不能往 \bibliography{book} 里添加扩展名 .bib。只要一添加,系统就说找不到 book.bib.bib。不知道是谁给多添加了个 .bib。我记得几个月前是没有这个问题的。

                我看到也有别人(路人甲路人乙)遇到了这个问题,看原因也没看出个所以然来,不过解决办法倒都是“去掉扩展名 '.bib'”。另外,有几处(示例1示例2)都强调在声明 \bibliography 时不要加扩展名。

                应该是 BibTeX 的问题。我的 BibTeX, Version 0.99d (MiKTeX 2.9.6500),是在 MiKTeX 的包管理器里最新安装的最新版。

                补充:更为奇怪的是,RStudio - New Files - Rmarkdown - From Template,选个 rticle 模板,里面的 yaml 都是带 .bib 扩展名的,编译出来的 pdf 参考文献却是正常的。所以我彻底糊涂了。

                  Cloud2016 1. 这个问题有点复杂,不是三两分钟能搞定的事,我得再花点时间。关键是 texmf-var/fonts/conf/texlive-fontconfig.conf 里面的路径不对。

                  1. 除非你安装了 LaTeX 包 latexmk 以及 Perl,否则 tinytex::latexmk() 应该会按你说的顺序执行。

                  dapengde 是不是我仍然没说清楚……首先,不能加 .bib 扩展名是 MiKTeX 中的 bibtex 造成的坑(如果你说你的参考文献库是 foo,那么它就会去找 foo.bib;如果你说是 foo.bib,那么它就会……去找 foo.bib.bib;总之它是坚持一定要在你给的文件名后面再多加一个 .bib;蠢成这样,就问你想不想杀了它……可能也是聪明反被聪明误),这个坑本不应该存在;其次,因为这个坑已经存在多年(仅存在于 MiKTeX 中;因为 CTeX 本质是 MiKTeX 加一些杂七杂八的套件,所以 CTeX 也继承了这个坑),我在 tinytex R 包中已经把它填了;关键问题是有且仅有 tinytex R 包的 latexmk() 函数默默填了这个坑。只要你用 MiKTeX 或者 CTeX,就只能依赖 tinytex 去编译带参考文献的文档。如果是 R Markdown 文档,那么所有你需要做的就是安装那个 feature/tinytex 分支(这个分支会合并到下一个 rmarkdown 版本中)。TinyTeX 本质是 TeX Live,这个坑不存在,你装不装它,都不影响参考文献的编译。当然我是推荐你装它,因为它是跨平台的,省得一天到晚操心在不同系统下到底加不加 .bib 扩展名。

                  你引的示例1说的并不是说 \bibliography{} 中不能加 .bib 扩展名,而是运行 bibtex 命令行时可以不加 .aux 扩展名。 这是由于 bibtex foobibtex foo.aux 通常是等价的。

                  我刚更新了一下 tinytex R 包,如果检测到参考文献编不出来,就会自动打印出详细的错误信息。你可以再试试:

                  devtools::install_github(
                    c("yihui/tinytex", "rstudio/rmarkdown@feature/tinytex")
                  )

                  看到底具体的错误信息是什么。

                    Cloud2016 字体问题我搞明白了,卸载再重装 xetex 包应该就好了:

                    library(tinytex)
                    tlmgr_remove('xetex'); tlmgr_install('xetex')

                    如果要改变安装路径,最好是一开始就直接把路径传给 install_tinytex() 函数:

                    tinytex::install_tinytex(dir = "D:\\TinyTeX")

                    当然,既然你已经装好了,就没必要再重新折腾一遍了,按我前面说的重装 xetex 包就够了。

                    另外,sourcesanspro 等包的正确使用姿势貌似应该是 \usepackage{} 而不是 \setmainfont{},如:

                    \usepackage[default]{sourcesanspro}

                    或者相应的 R Markdown:

                    output:
                      pdf_document:
                        latex_engine: xelatex
                        extra_dependencies:
                          sourcesanspro: default

                    还有,编译 .tex 文件的时候用具体的 tinytex::xelatex() 函数就可以了,不必打冗长的 latexmk(...)

                      Cloud2016 太好了,这下只剩下唯一一个疑案了,就是 @dapengde 在 CTeX 下为啥编不出参考文献来。实在不行我就只能用最后一招了,远程桌面现场侦查……

                        yihui 发现一个很奇怪的现象:

                        我在 Rmd 源文档中写下如下代码块

                        '鸢尾花数据的散点图'

                        Knitr + XeLaTeX 编译后出来的效果却是
                        cjkengspace
                        '和 之间冒出来多余的空格,不知道怎么处理?

                          Cloud2016 这是 ctex 包(注意我说的是包,不是 CTeX 套装)的默认行为:英文和中文字符之间默认加空格。显然在代码块中不能自动加空格,但 ctex 没有这么智能。我应该曾经找到过解决办法,但年代太久远,我也不知道放哪儿了。你终于踩到了一个我觉得还有点挑战性的坑,哈哈。

                            yihui 这几天在折腾自己学校的硕士学位论文模板,又发现个问题 <https://github.com/yihui/bookdown-chinese/issues/9>,后来模板走 ctexart类 和 rticles::ctex 路线,绕开了,我发现这个问题同样影响 bookdownplus 但是@dapengde 很聪明地将标题和作者都转为英文,而其他部分是中文,这样警告就没有了,我测试的模板是article_zh

                              Cloud2016 那个 #9 问题可以忽略之,只是一个无碍的警告信息,可能是 RStudio 在 Windows 下的某个缺陷。

                                上周出差了,没来得及最终安装一下,今天安装出问题了,fedora27 的结果如下:

                                tinytex::install_tinytex()
                                
                                #### 省略下载信息,省得看着太累,报错为:
                                
                                2017-12-17 17:42:15 (563 KB/s) - 已保存 “install-tl-unx.tar.gz” [4031343/4031343])
                                
                                Automated TeX Live installation using profile: ../texlive.profile
                                Loading http://mirrors.tuna.tsinghua.edu.cn/CTAN/systems/texlive/tlnet/tlpkg/texlive.tlpdb
                                ../install-tl-20171216/install-tl: checksum error when downloading /tmp/MX4YXw8BH2/RAXktNrP2d from http://mirrors.tuna.tsinghua.edu.cn/CTAN/systems/texlive/tlnet/tlpkg/texlive.tlpdb: digest disagree
                                rm: 无法删除'install-tl.log': No such file or directory
                                sh: 第 25 行:cd: bin/*: No such file or directory
                                sh:行26: ./tlmgr: No such file or directory
                                mv: 无法获取'texlive/*' 的文件状态(stat): No such file or directory
                                install-unx.sh:行24: /home/lovebluesky/.TinyTeX/bin/*/tlmgr: No such file or directory
                                install-unx.sh:行31: /home/lovebluesky/.TinyTeX/bin/*/tlmgr: No such file or directory
                                Warning message:
                                In tinytex::install_tinytex() :
                                  TinyTeX was not successfully installed or configured.