如何:记录中的场景

时间:2017-11-12 19:51:28

标签: r bookdown

我试图用bookdown写一本小说:HTML,EPUB,以及PDF(pdfLaTeX)。我使用缩进模式,所以段落以缩进开头。我有以下自定义LaTeX命令,名为\scenebreak,其中:

  1. 当一个章节中的场景发生变化时,在段落之间留下一条空行。
  2. 如果场景中断位于页面末尾或页面的开头,则介绍ding。
  3. 重置中断后段落的缩进(中断后的段落开始向左冲洗)。
  4. 这是LaTeX:

    % scene breaks
    \renewcommand{\pfbreakdisplay}{%
    \scriptsize\ding{86}}
    \newcommand{\scenebreak}{\pfbreak*\noindent}
    \newcommand{\forceindent}{\leavevmode{\indent}}
    

    在LaTeX中引入场景时,我称之为

    Text here
    
    \scenebreak
    
    New scene begins here.
    

    在HTML中,我就是这样做的:

    <div style='text-align:center;'>&#8226;</div>
    

    我知道记事本中的block就像是一个LaTeX环境。

    是否可以使用命令/宏进行类似的设置?

1 个答案:

答案 0 :(得分:3)

我真的不明白你的问题,但是如果你试图根据不同的输出格式写出不同的内容,那么你可以做到:

```{r echo=FALSE}
knitr::asis_output(if (knitr:::is_latex_output()) {
  "\\scenebreak"
} else {
  "<div style='text-align:center;'>&#8226;</div>"
})
```

如果您必须多次这样做,请创建一个函数并调用该函数,例如,在您的书的开头插入此代码块:

```{r, include=FALSE}
scenebreak = function() {
  knitr::asis_output(if (knitr:::is_latex_output()) {
    "\\scenebreak"
  } else {
    "<div style='text-align:center;'>&#8226;</div>"
  })
}
```

然后使用需要中断的函数scenebreak()

```{r echo=FALSE}
scenebreak()
```