我刚刚注意到,单击pdf中的脚注链接会使文档跳到顶部而不是脚注。研究为什么我确定乳胶包装setspace
和footmisc
显然引起了错误。
不幸的是,我非常需要两个软件包。前者可以在\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.
注释:
> 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
答案 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}
行。
为此,请按照以下步骤操作:
找到当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
可以正常工作。
将该文件的内容放入一个新的template.tex
(或任何您想命名的文件)中,并在调用hyperref包之前插入您的footmisc自定义代码(第57行)。
将新模板文件的路径放在键output.pdf_document.template
下的YAML前端中:
---
output:
pdf_document:
template: 'path/to/template.tex'
---
顺便说一句:我对软件包 setspace 没遇到任何问题。但由于我在YAML前端设置了linestretch
(因此,请参见模板以获取有关触发设置空间以获取加载内容的详细信息,等等),无论如何,我还是在 footmisc 之前加载了它。