在R Markdown文本中(不是代码块),如何进行换行?

25
使用tufte_template rmarkdown文件,我正在尝试创建一个新段落(类似于\newthought{},但不需要大写)。我使用两个空格,用*表示:
# Introduction

The Tufte-\LaTeX\ [^tufte_latex] document**
**
classes define a style similar to the style Edward Tufte uses in his books...

但得到的结果是:

在此输入图片描述

我已经尝试在第二个空格对(**)处使用\n,但 pandoc 报错了。

pandoc.exe: Error producing PDF from TeX source
Error: pandoc document conversion failed with error 43

最后,我尝试使用 <br> 标签,但似乎完全没有效果——不会将文本或换行符打印到 PDF 中。

我想要一个新的段落,没有缩进,类似于 \newthought{},但不带大写字母……有什么办法吗?

更新1 使用 sessionInfo():

> sessionInfo()
R version 3.1.2 (2014-10-31)
Platform: x86_64-w64-mingw32/x64 (64-bit)

locale:
[1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United States.1252   
[3] LC_MONETARY=English_United States.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] digest_0.6.8    htmltools_0.2.6 rmarkdown_0.5.1 tools_3.1.2     yaml_2.1.13

更新2

我发现这个问题只会在使用Tufte模板时遇到:

enter image description here


你的代码对我来说可行,没有缩进,也没有大写。 - zx8754
1
@zx8754,在“Tufte LaTex Document”和“classes define…”之间有一个完整的、空白行吗? - d8aninja
@zx8754 刚刚重新运行了一遍,输出结果和之前的一样...? - d8aninja
6个回答

27

我尝试了这些测试,似乎可以正常工作:

test.Rmd

---
output: pdf_document
---

# test 1
No spaces used   

line1
line2


# test 2
2spaces at the end of line1  

line1  
line2

# test 3
2spaces at the end of line1, then 2 spaces on next line

line1  

line2

输入图像描述

sessionInfo()
R version 3.2.0 (2015-04-16)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1

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

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

loaded via a namespace (and not attached):
[1] htmltools_0.2.6 tools_3.2.0     yaml_2.1.13     rmarkdown_0.5.1 digest_0.6.8 

似乎是tufte_template导致了这些不同的结果...请看我更新的新图片--为什么会这样呢? - d8aninja

24

虽然这是一个比较老的问题,但因为当我们在谷歌搜索“rmarkdown中的换行”时它是第一个结果,所以我还是会回答一下。

如果要编译成PDF格式,您可以使用LaTeX宏。将新行中的**替换为\hfill\break

# Introduction

The Tufte-\LaTeX\ [^tufte_latex] document**
\hfill\break
classes define a style similar to the style Edward Tufte uses in his books...

我无法使用被接受的答案在文本和后续代码块之间添加空格,但是 \hfill 对我很有帮助。 - Michael Szczepaniak

5
我发现添加空白行最好的方法是:
# First title
<br><br><br><br><br>  

# Second title with 5 blank spaces above it

希望下面的方法能对你有所帮助。我只在html文档中进行了测试,但是理论上它也可以在pdf中起作用。

9
遗憾的是,PDF目标会默默地吞掉<br>。 - szarka

3

R markdown内置了对"mathdisplay"的支持,您可以使用它来插入新行,非常方便

代码

---
title: "testdoc"
author: ""
date: ""
output: pdf_document
---

# Title

this is a test text $\\$ this is a text after newline

too many newlines $\\ \\ \\ \\ \\$ foo $\\$ bar

\begin{paragraph}{with newline}
$\\$
How much wood could a woodchuck chuck if a
woodchuck could chuck wood?  A woodchuck $\\$
would chuck all the wood that a woodchuck
could chuck, if a woodchuck could chuck wood.
\end{paragraph}

\begin{paragraph}{without newline}
  How much wood could a woodchuck chuck if a
woodchuck could chuck wood?  A woodchuck
would chuck all the wood that a woodchuck
could chuck, if a woodchuck could chuck wood.
\end{paragraph}

输出

file : test.pdf


这是一个非常简洁和好的解决方案,运行得很好。(为什么没有更多的赞?)肯定比&nbsp;\linebreak更高效。 - jaggedjava

2

如果您使用Knit生成PDF输出,则可以使用本地LaTeX指令。但这会破坏其他输出格式,如HTML...

例如:

在Markdown部分中

---
output: pdf_document
---

# test 1
No spaces used   

line1\linebreak
line2

line3\linebreak line4
\linebreak\newline 看起来都可以使用...
作为R表达式: r paste0("test", "\\linebreak ", "test2") 输出结果为:
test test2
不要忘记在"\linebreak "后面加上一个空格...
这也允许段落居中。
另请参阅:在R Markdown中居中图像和文本以进行PDF报告

1

在前面添加一个空字符(ALT+255)使用换行符。

例如:

.\linebreak

空字符(此处显示为句点)可防止出现错误信息“LaTeX Error: There's no line here to end.”。
注意:空字符在此处显示为句点,因为我无法在Stackoverflow中包含空字符。但是,您不能使用句点,而是要在键盘上按ALT + 255。在.Rmd文件中,它将显示为类似于句点的符号,但此符号在输出中将不可见(例如PDF文件)。

当你说“在键盘上按下ALT + 255”时,你是指按住ALT键,同时按下2、2和5吗?如果是这样,在我的键盘上没有任何反应... - d8aninja
是的,没错。在快速按下2、5、5并释放ALT键之前,一直按住ALT键。(不是225而是255)。通常需要尝试几次才能正确输入。如果可能的话,即使我认为应该显示空字符,它也可能不会在您的文件中显示。如果是这样,请尝试将其复制粘贴到另一个文本编辑器中以查看是否可能在那里显示。 - madsR

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接