【问题标题】:R knitr: force linebreak in headlineR knitr:在标题中强制换行
【发布时间】:2020-08-28 07:24:35
【问题描述】:

我想在用 knitr 编织到 PDF 和 HTML 输出的 R 降价文件中的长标题中强制换行。充其量,标题的引用应该仍然有效。 针对相关问题提出的以下解决方案未能解决问题:\\\n<br><br>(后两者仅适用于 HTML)。

  ---
  title: "TEST"
  author: "Tester"
  output:
    pdf_document: default
    html_document:
      df_print: paged
  ---

  # Fancy long headline in R Markdown

  \newpage

  # Not working:

  ## Fancy long headline in \\ R Markdown

  # Work in HTML only:

  ## Fancy long headline in <br> R Markdown

  ## Fancy long headline in <br /> R Markdown

  <!-- ## Fancy long headline in   \n R Markdown -->
  <!-- => `  \n` throws error in LaTex -->

  \newpage

  # Reference the headline

  Reference the [fancy long headline in r markdown] 
  or similarly in bookdown [fancy-long-headline-in-r-markdown] 
  or via [myref](fancy-long-headline-in-r-markdown).

非常感谢任何帮助。

【问题讨论】:

  • 你可以考虑使用 Pandoc Lua 过滤器:stackoverflow.com/a/52193443/559676
  • 确实似乎是一种选择,尽管 user2554330 和 @Taufi 最近的回答似乎在简单的 Rmds 中使用起来更快。

标签: r r-markdown markdown knitr bookdown


【解决方案1】:

实际上,你几乎就在那里。您需要将乳胶代码放入$...$。使用此代码

---
title: "TEST"
author: "Tester"
output:
  pdf_document: default
html_document:
  df_print: paged
---

  # Fancy long headline in R Markdown

  \newpage

# Working!

## Fancy long headline in $\\$ <br> R Markdown

给了

【讨论】:

  • 非常感谢@Taufi 的快速而优雅的回复!添加$\\$ &lt;br&gt; 可以很好地处理这两个用例。令人惊讶的是[fancy long headline in $\\$ &lt;br&gt; r markdown] 可以引用标题,但是,它本身包含一个换行符。您对改进引用有什么建议吗?最好不要添加标签?
  • 当在bookdown/thesisdown 中使用# Fancy long headline in $\\$ &lt;br&gt; R Markdown 时,不幸的是我遇到了以下错误:“/Library/TeX/texbin/tlmgr: 来自 verify_checksum 的意外返回值:-5 !LaTeX 错误:这里没有行可以结束。”
  • 不客气!不幸的是,我对 bookdown/thesisdown 的了解不够,无法在这里为您提供帮助,抱歉 :(
  • 这似乎适用于@Taufi 的解决方案:Reference the [Fancy long headline in R Markdown](#fancy-long-headline-in-r-markdown) 在 PDF 和 HTML 中。你应该接受他们的回答!
  • @user2554330:Taufi 的解决方案适用于简单的降价文件,是的。
【解决方案2】:

如果你想要一些可以在 PDF 中工作但不关心 HTML 的东西,定义一个新的 LaTeX 命令并使用它。例如,

\newcommand{\Linebreak}{\\}

## Fancy long headline in \Linebreak R Markdown

如果您希望它同时适用于两者,应该这样做:

\newcommand{\Linebreak}{\\}
```{r include = FALSE}
Linebreak <- function()
  if (knitr::opts_knit$get("rmarkdown.pandoc.to") == "html")
    " <BR> " else " \\Linebreak "
```

## Fancy long headline in `r Linebreak()` R Markdown

在 PDF 中获得参考并不难,但在 HTML 中似乎很棘手;我会把它留给你或其他人来解决。

【讨论】:

  • 非常感谢@user2554330 的输入! PDF 和 HTML 都需要输出,最多也需要引用。
  • 如果在bookdown/thesisdown 中使用# Fancy long headline in r Linebreak()` R Markdown`,则目录中的标题显然也会包含换行符。解决方法“\chapter[R Markdown 中的花式长标题]{r Linebreak() R Markdown\label{mylabel}} 中的花式长标题”对我来说在 PDF 中效果很好,但在 HTML 中根本不行。你有什么建议吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-05-07
  • 2012-11-23
  • 1970-01-01
  • 1970-01-01
  • 2018-08-26
  • 1970-01-01
  • 2018-06-29
相关资源
最近更新 更多