R 如何使用激活的'跳到脚注;设置空间';和';footmisc';包裹

R 如何使用激活的'跳到脚注;设置空间';和';footmisc';包裹,r,latex,r-markdown,knitr,pandoc,R,Latex,R Markdown,Knitr,Pandoc,我刚刚注意到,点击pdf中的脚注链接会使文档跳到顶部,而不是脚注。调查我为什么确定latex软件包setspace和footmisc显然是导致错误的原因 不幸的是,我急需两个包裹。前者可以在\onehalfspacting和\singlespacing之间切换,后者可以获得漂亮的悬挂脚注 有人知道解决办法吗 MWE (注意:尝试取消注释未注释的行。) 注意事项: MiKTeX 2.9.6850 故意使用过时的rmarkdown_1.8() >sessionInfo() R版本3.5.1(2

我刚刚注意到,点击pdf中的脚注链接会使文档跳到顶部,而不是脚注。调查我为什么确定latex软件包
setspace
footmisc
显然是导致错误的原因

不幸的是,我急需两个包裹。前者可以在
\onehalfspacting
\singlespacing
之间切换,后者可以获得漂亮的悬挂脚注

有人知道解决办法吗

MWE

(注意:尝试取消注释未注释的行。)


注意事项:

  • MiKTeX 2.9.6850
  • 故意使用过时的rmarkdown_1.8()
>sessionInfo()
R版本3.5.1(2018-07-02)
平台:x86_64-w64-mingw32/x64(64位)
在以下环境下运行:Windows 7 x64(build 7601)Service Pack 1
矩阵乘积:默认值
区域设置:
[1] LC\U COLLATE=德国瑞士。1252 LC\U CTYPE=德国瑞士。1252
[3] LC_货币=德国_瑞士。1252 LC_数字=C
[5] LC_时间=英语_美国1252
附加基本包:
[1] 统计图形GRUTILS数据集方法库
通过命名空间加载(未附加):
[1] 编译器\u 3.5.1后台端口\u 1.1.2 rprojroot\u 1.3-2 htmltools\u 0.3.6工具\u 3.5.1
[6] yaml_2.2.0 Rcpp_0.12.19 R标记_1.8 knitr_1.20 digest_0.6.18
[11] 评估0.12

我遇到了类似的问题(脚注不是链接,因此在使用footmisc时不再可点击)。不幸的是,我无法在
.Rmd
文档本身中找到任何直接解决此问题的方法。相反,我必须编辑随rmarkdown一起提供的Pandoc LaTeX模板

正如@Mico在TeX/LaTeX stack exchange站点中解释的,根本问题是LaTeX包hyperref在footmisc之前调用,而它必须以相反的方式调用,以避免两者之间的不兼容。如果查看rmarkdown使用的默认LaTeX模板,您会注意到在
标题包含来自YAML前端的
之前,hyperref被称为way。我所知道的唯一解决方法是修改LaTeX模板,即在调用hyperref的行之前插入行
\usepackage[hang,flushmargin]{footmisc}

要执行此操作,请执行以下步骤:

  • 找到在rmarkdown/knitr调用Pandoc时使用的原始模板文件

    在Unix/Linux系统上,您可能会在路径
    ~/Library/R/3.5/Library/rmarkdown/rmd/latex/
    /usr/lib/R/site Library/rmarkdown/rmd/latex/
    下找到原始模板文件(只需将路径的开头替换为在R控制台中显示的
    .libpath()

    至少在rmarkdown v1.10中,上面的文件夹包含4个不同的LaTeX模板文件:

    • default-1.14.tex
    • default-1.15.2.tex
    • default-1.17.0.2.tex
    • default.tex

    default-1.17.0.2.tex
    如果使用的是半新版本的Pandoc(它与rmarkdown捆绑在一起,如果在您的系统上找不到或只有过时的Pandoc版本,则将使用它;运行
    rmarkdown::Pandoc_version()
    以了解实际使用的版本)

    首先,我尝试了
    default.tex
    ,但结果非常过时,
    default-1.17.0.2.tex
    工作正常

  • 将该文件的内容放入一个新的
    template.tex
    (或任何您想命名的)文件中,并在调用package hyperref之前插入footmisc自定义代码(第57行)

  • 将新模板文件的路径放入YAML front matter项下的
    output.pdf\u document.template

    ---
    output:
      pdf_document:
        template: 'path/to/template.tex'
    ---
    

  • 顺便说一句:我没有遇到任何关于包设置空间的问题。但在我的例子中,由于YAML前端设置了
    linestretch
    (有关触发设置空间加载等的详细信息,请参阅模板)。我肯定已经遵循了您的所有步骤,但它仍然会跳到顶部。使用pandoc版本
    1.19.2.1
    hm,奇怪。我使用的是相同的Pandoc版本
    '1.19.2.1'
    。您确定它与您正在使用的PDF视图无关吗?
    ---
    output:
      pdf_document:
        template: 'path/to/template.tex'
    ---