2017-11-12 5 views
3

私はbookdown:HTML、EPUB、PDF(pdfLaTeX)を使って小説を書こうとしています。私はインデントモードを使用しているので、段落はインデントで始まります。どのように:ブックダウンのシーンブレーク

  1. は段落間に空行を離れるときに章の中のシーンの変化:私は\scenebreakと呼ばれる次のカスタムLaTeXのコマンドを、持っています。
  2. シーンの区切りがページの終わりにある場合、またはページの先頭にある場合は、dingを導入します。
  3. 改行に続く段落のインデントをリセットします(改行に続く段落は、最初にフラッシュします)。

ここでLaTeXのです:ラテックス中scenebreakを導入する場合

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

、私はHTMLで

Text here 

\scenebreak 

New scene begins here. 

ので、それを呼んで、これは私がそれをやった方法です:

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

ブックダウンのblockはLaTeX enのようなものですvironment。

コマンド/マクロでも同様の設定が可能ですか?

答えて

2

私は本当にあなたの質問を理解していますが、異なる出力形式に応じて異なるコンテンツを書き出すしようとしている場合は、ここにあなたが何ができるかではありません。

```{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>" 
    }) 
} 
``` 

は、次にブレークが必要とされる機能を使用し

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

こんにちはYihui、それは私が探しているもののようなものです。しかし、これを達成するための一種のコマンドがありますか?シーンブレーク(私の本は約20点あります)ごとにこれを追加するのはちょっとだけです... –

+0

小説の最初に機能を作成し、必要な場所に呼び出します。 –

+0

私はRのプログラマーではありません。この文脈で関数を作成するのに役立つチュートリアルを教えてください。 [this](https://swcarpentry.github.io/r-novice-inflammation/02-func-R/)はいいですか? –