0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

RMD, 通常目次とサイドバー目次を両方掲載できるか調査中

Last updated at Posted at 2020-03-29

普通は両方掲載できないので、片方は自分で生成する。

TOC抽出まではうまくいくが、RMD上でうまく実行できるようにするのが難しい。

Step1
RMDをまずmarkdownに変換する。こちらでは通常の目次を生成するようにする。
得られたmarkdownから通常の目次を抽出する。

Step2
RMDに通常目次を埋め込む
Step1~2はRMDのチャンク内で実行することとする。

Step3
サイドバー目次を生成する設定でRMDをコンパイルする。

res <- getTOC_str("o.Rmd")
> cat(res)
  - [はじめに](#はじめに)
      - [aa](#aa)
      - [漢字 P@\_/](#漢字-p_)
  - [R Markdown](#r-markdown)
  - [Including Plots](#including-plots)> 
writeMD_withoutChunk <- function(rmd_path, out_path){
    # number_sections=TRUEは, html_documentでないと使えない。
    #----
    fmt <- github_document(html_preview=F, toc=T)  
    fmt$knitr$opts_chunk$include=F
    rmarkdown::render(rmd_path, fmt, out_path)
}


getTOC_str <- function(rmd_path){
    tmp_path <- tempfile(fileext = ".md")
    writeMD_withoutChunk(rmd_path, tmp_path)
    
    lines <- readLines(tmp_path, encoding="UTF-8")
    #-------
    blank_flags     <- (lines=="")
    blank_positions <- which(blank_flags)
    at_blank1 <- blank_positions[1]
    at_blank2 <- blank_positions[2]

    rng <- seq(at_blank1+1, at_blank2-1)
    toc_lines <- lines[rng]
    toc_str   <- stringr::str_c(toc_lines, collapse="\n")
    return(toc_str)
}

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?