20

pandoc.convert を使用して .pdf に変換しようとしている ar マークダウン ドキュメント内のチャンクを参照しようとすると問題が発生します。

\label{mylabel}テキスト内に含める場合- これは で参照できます\ref{mylabel}。ただし、同様にチャンク (またはチャンク内のテーブル/図) を参照できると思いましたが、運がありません。

たとえば、チャンクの場合:

```{r myplot, echo=FALSE, warning=FALSE}
plot(cars)
```

私は、または内部のマークダウン参照を配置できるかもしれ\ref{myplot}ませ\ref{fig:myplot}[car plot](myplot)。ドキュメントには、チャンクの名前に基づいてラベルが作成されることが記載されているようで、これらは同様の質問に関して提案されている形式です。しかし、どれも機能していないようです。

同様に、テーブル (パンダーを使用して作成) についても、次のようなチャンクがあります。

```{r car_sum}
library(pander)
car_summary<-summary(cars)
pander(car_summary, caption = "This is a summary of cars")
```

「pandoc.convert」を使用して .md ファイルから .pdf に変換すると、表に「表 3 これは車の概要です」という素敵なタイトルが付けられ、番号が付けられますが、ラベルを参照として使用できないよう\ref{car_sum}で、常に「??」と表示されます。一部のフォーラムでは、ラベル名の前に「tab:」または「fig:」を含める必要があると言及されているようですが、これはまだ機能しません。

テキスト内のチャンク参照はできますか? その場合、これを正しく行うために入力する必要があるものは、「表 2 を参照」のように表示される最終ドキュメントで機能するためです。

4

2 に答える 2

19

何でも可能です!!

あなたが説明したことを行うこの要点を見てください。保存して編むだけで動作を確認できます... 何らかの理由で Rpub は公開しませんでした (不明なエラー)。

生成されたknitrをpandoc経由で変換してテストすると、.htmlリンク.pdfも機能するようになりました。これは素晴らしいボーナスです!

働き者は::

```{r setup, echo=FALSE, results='hide'}
chunkref <- local({
  function(chunklabel) {
    sprintf('[%s](#%s)', chunklabel, chunklabel )
  }  
})

secref <- local({
  function(seclabel) {
    sprintf('[%s](#%s)', seclabel, seclabel )
  }  
})

pgref <- local({
  function(n)
  sprintf('[Page-%i](#Page-%i)', n, n)
})

sec <- local({
  function(seclabel) {
    sprintf('# <a name="%s"/> %s', seclabel, seclabel )
  }  
})

pgcount <- local({
  pg <- 0
  function(inc=T) {
    if( inc ) { pg <<- pg + 1 }
    return( pg )
  }
})

pganchor <- local({
  function(doLabel=T) {
    if( doLabel) {
      sprintf('\n-----\nPage-%i\n<a name="Page-%i"/>\n', pgcount(inc=F), pgcount() )
    } else {
      sprintf('\n<a name="Page-%i"/>\n', pgcount() )
    }
  }
})

knit_hooks$set( anchor = function(before, options, envir) {
  if ( before ) {
    sprintf('<a name="%s"/>\n', options$label )
  }
})

knit_hooks$set( echo.label = function(before, options, envir) {
  if ( before ) {
    sprintf('> %s', options$label )
  }
})

knit_hooks$set( pgbreak = function(before, options, envir) {
  if ( !before ) {
    pganchor();
  }
})
````

これにより、複数のタイプの参照を作成できます...

Inline: `r sec("Introduction")` then `r secref("Introduction")`

または

チャンク オプションとして:

```{r car-summary, echo=T, warning=FALSE, anchor=T, pgbreak=T, echo.label=F}`

それから

`r chunkref("car-summary")`

「ページの上部」のリンクや「ページの下部」のマーカーやラベルも...

于 2013-06-21T00:15:49.137 に答える