如何使用激活的“ setspace”和“ footmisc”包跳转到脚注?

时间:2018-10-23 16:44:47

标签: r latex r-markdown knitr pandoc

我刚刚注意到,单击pdf中的脚注链接会使文档跳到顶部而不是脚注。研究为什么我确定乳胶包装setspacefootmisc显然引起了错误。

不幸的是,我非常需要两个软件包。前者可以在\onehalfspacing\singlespacing之间切换,而后者可以得到漂亮的悬挂脚注。

有人知道解决方法吗?

MWE

注意:尝试取消注释掉注释过的行。)

---
title: "Untitled"
date: "October 23, 2018"
output: pdf_document
linkcolor: blue
header-includes:
# - \usepackage{setspace}
- \usepackage{fancyhdr}
- \usepackage{pdflscape}
- \usepackage{dcolumn}
- \usepackage{rotating, graphicx}
- \usepackage{floatpag}
- \usepackage{caption}
- \usepackage[export]{adjustbox}
- \usepackage{icomma}
- \usepackage{tabularx}
- \usepackage{lipsum}
- \usepackage{csquotes}
# - \usepackage[hang,flushmargin]{footmisc}
- \usepackage{amsmath}
- \usepackage{mathtools,extarrows}
- \usepackage{changepage}
---

\newpage
Lorem ipsum^[Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.] dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. 

注释:

  • MiKTeX 2.9.6850
  • 故意使用过时的rmarkdown_1.8(see this issue
> sessionInfo()
R version 3.5.1 (2018-07-02)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1

Matrix products: default

locale:
[1] LC_COLLATE=German_Switzerland.1252  LC_CTYPE=German_Switzerland.1252   
[3] LC_MONETARY=German_Switzerland.1252 LC_NUMERIC=C                       
[5] LC_TIME=English_United States.1252 

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

loaded via a namespace (and not attached):
 [1] compiler_3.5.1  backports_1.1.2 rprojroot_1.3-2 htmltools_0.3.6 tools_3.5.1    
 [6] yaml_2.2.0      Rcpp_0.12.19    rmarkdown_1.8   knitr_1.20      digest_0.6.18  
[11] evaluate_0.12  

1 个答案:

答案 0 :(得分:1)

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

正如@Mico在TeX / LaTeX堆栈交换站点上的this answer中所述,潜在的问题是LaTeX软件包 hyperref footmisc 之前被调用。为了避免两者之间的不兼容,必须采取另一种方法。如果您查看rmarkdown使用的默认LaTeX模板,您会注意到,在从YAML前端注入header-includes之前,调用了hyperref。我知道的唯一解决方法是修改LaTeX模板,即在调用hyperref的行之前插入\usepackage[hang,flushmargin]{footmisc}行。

为此,请按照以下步骤操作:

  1. 找到当rmarkdown / knitr调用Pandoc时使用的原始模板文件。

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

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

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


    如果使用的是Pandoc的中途版本,则default-1.17.0.2.tex似乎是正确的选择(它与rmarkdown捆绑在一起,如果在系统上找不到或仅找到过时的Pandoc版本,将使用它;运行rmarkdown::pandoc_version()查找找出实际使用的版本。

    首先,我尝试了default.tex,但事实证明它已经过时了,default-1.17.0.2.tex可以正常工作。

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

  3. 将新模板文件的路径放在键output.pdf_document.template下的YAML前端中:

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

顺便说一句:我对软件包 setspace 没遇到任何问题。但由于我在YAML前端设置了linestretch(因此,请参见模板以获取有关触发设置空间以获取加载内容的详细信息,等等),无论如何,我还是在 footmisc 之前加载了它。