

手順書のフォーマットを、エクセルからMarkdown記法に切り替えられないか模索・検討しております。  
`手順4: 手順1~3を繰り返す`の`手順1~3`を自動で当てはめられないか、書き方で困っています。  
プラグインなど、解決策、回避策をご存知の方はいらっしゃいませんか。

私の作成したい手順書のイメージは以下です。

[code]

    　　　
    ```markdown:before
    1. 手順A
    1. 手順B
    1. 手順C
    1. [STEP1的な何か]〜[STEP3的な何か]を繰り返す ◀️[STEP1的な何か]に章立てのタイトルを入れたい
    ```
    ⬇️
    ```markdown:after
    1. 手順A
    2. 手順B
    3. 手順C
    4. 手順A〜手順Cを繰り返す
    ```
    
    
[/code]

なお、私の環境は以下の通りです。

  * Visual Studio Code ver.1.8.X  
プラグインの導入は可能です。

検索エンジンで`step repeat manual procedure markdown`等と検索しましたが、  
解決に役立つ情報は見つかりませんでした。  
[DRYなMarkdownを書こう](http://qiita.com/blackawa/items/8a4d692071534478c8a3)はまさに自分が直面していた課題だったのですが、  
`Github`の開発者ページは打ち捨てられてました...

お手数おかけいたしますが、以上、よろしくお願いいたします。


CC BY-SA 3.0
2017-01-04T12:36:47.613
31614
2017-01-06T17:33:51.080
2904
question
markdown
Markdownで手順をリピートしたい


美的な問題はありますが、いわゆるテンプレートエンジンの類はどうでしょうか。

[code]

    1. <%- first = "手順A" %>
    1. 手順B
    1. <%- last = "手順C" %>
    1. <%- first %> 〜 <%- last %>を繰り返す
    
[/code]

上記とスニペットで使用しているのは [EJS](https://github.com/mde/ejs) です。  
プログラマならぎりぎり使えるかな、という感じですね。

[code]

    function render(){
     const md = ejs.render($src.value, {});
     $markdown.textContent = md;
     $html.innerHTML = marked(md);
    }
    </script>
[/code]

[code]

    h1{
     font-size: 1em;
    }
    textarea {
     width: 100%;
     height: 20em;
    }
    pre, div {
     color: black;
     background: lightgray;
    }
[/code]

[code]

    <!-- 例示用に GitHub のソースを直接利用。常用不可 -->
    <script src="https://github.com/mde/ejs/releases/download/v2.5.5/ejs.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/marked/0.3.6/marked.min.js"></script>
    
    <h1>ソース（Markdown + EJS）</h1>
    <textarea id="$src">
    # 変数
    
    1. <%- first = "手順A" %>
    1. 手順B
    1. <%- last = "手順C" %>
    1. <%- first %> 〜 <%- last %>を繰り返す
    
    ---
    # リスト/繰り返し
    
    <%
     let list = ["手順A", "手順B", "手順C"];
     for(let li of list){
    -%>
    1. <%- li %>
    <%
     }
    -%>
    1. <%- list[0] %> 〜 <%- list[list.length - 1] %>を繰り返す
    </textarea>
    <button onclick="render();">変換</button>
    
    <h1>Markdown</h1>
    <pre id="$markdown"></pre>
    
    <h1>HTML</h1>
    <div id="$html"></div>
[/code]


CC BY-SA 3.0
2017-01-06T09:16:24.653
31665
2017-01-06T09:16:24.653
3054
31614
answer


R markdown は試されました？  
<http://rmarkdown.rstudio.com/>

markdownベースで、動的なレポートを書くにはそれなりに有効そうです。  
元のmarkdownを以下のように表現できます。

[code]

    ```{python echo=FALSE, results='asis'}
    manual = [
        '手順A',
        '手順B',
        '手順C',
    ]
    
    for i, man in enumerate(manual):
        print("%d. %s" % (i + 1, man))
    
    print("%d. %s〜%sを繰り返す" % (len(manual) + 1, manual[0], manual[-1]))
    ```
    
[/code]

* * *

_以下は私の環境(OSX Sierra + python3 + markdown)で出力した手順です。_

あらかじめ`knitr`パッケージをRでインストールしておき、

[code]

    > install.packages(knitr)
    
[/code]

PATHに以下のような`knit`スクリプトを置きます

[code]

    #!/usr/local/bin/Rscript
    library(knitr)
    input <- readLines('stdin')
    invisible(knit(text=input, output=stdout(), quiet=TRUE))
    
[/code]

上のmarkdownを`test.md`としてパイプに渡すと以下のような結果を得られます。

[code]

    $ cat test.md | knit 2>/dev/null | markdown
    
    <ol>
    <li>手順A</li>
    <li>手順B</li>
    <li>手順C</li>
    <li>手順A〜手順Cを繰り返す</li>
    </ol>
    
[/code]


CC BY-SA 3.0
2017-01-06T17:33:51.080
31680
2017-01-06T17:33:51.080
62
31614
answer