メインコンテンツへスキップ
見出し画像

科学技術出版プラットフォーム:Quatro

    1.概要

    「オープンソースの科学技術出版プラットフォーム 」であるQuartoを紹介します。

    1-1.Markdownとは

     Markdownは、プレーンテキストのテキスト文書にフォーマット要素を追加するために使用できる軽量のマークアップ言語です。2004年にジョン・グルーバーによって作成されたMarkdownは、今や世界で最も人気のあるマークアップ言語の1つです。

    1-2.Quartoとは

     2022年7月に公開されたQuartoは 「オープンソースの科学技術出版プラットフォーム 」であり、次世代のR Markdownとなります。
     R Markdownと同様に、Quatroは KnitrとPandocをベースにしており、多様なフォーマット変換とコード実行エンジン(Knitr / Jupyter / Observable など)を一つに統合しています。

     Quartoは、Knitrの代替計算エンジンとしてJupyterもサポートしており、既存のJupyterノートブックを変更せずにレンダリングもできます。処理のプロセスフローは下記の通りです。

    1. NotebookをプレーンなMarkdownに変換

    2. Pandocで処理

    3. 指定フォーマットに変更

    画像

    1-3.Quartoの機能

     機能は以下の通り。

    • 多彩な出力フォーマット
      1 つの .qmd から HTML/PDF/MS Word/ePub/Reveal JS・Beamer スライド/Confluence などを生成 (All Formats)

    • 言語横断コード実行
      同一ドキュメント内で Python・R・Julia・Observable JS などを実行し、結果を自動埋め込み (Using Julia)

    • Web サイト&ブック(技術書)生成
      _quarto.yml だけで静的サイトや multi‑page book を構築し、全文検索や章番号を自動付与(Creating a Book)

    • Quarto VS Code Extension(VS Codeの拡張機能)
      VS Codeの拡張機能あり(VS Code)

    • テーマ/ブランド & ダーク‑ライト自動切替
      内蔵 Bootstrap 5 テーマや styles.scss に加え、OS の配色に応答する respect‑user‑color‑scheme と brand.yml でロゴまで自動交換 (HTML Theming)

    • Quarto Extensions
      ショートコード・フィルタ・新フォーマットなどを quarto add … で簡単に追加・管理 (Managing Extensions)

    • Listings(自動インデックス)
      ブログ記事や講演ノート等の一覧ページをメタデータから自動生成(Document Listings)

    • ドキュメントの公開
      Netlify(Web公開のプラットフォーム)のコマンド:quarto publish で Quarto Pub/GitHub Pages/Netlify/Posit Connect へ即デプロイ(Netlify)

    • IDE 統合
      VS Code・RStudio・JupyterLab 拡張がレンダリング、スニペット、診断をサポート(VS Code)

    • CI/CD 連携(Github Actions for Quarto)
      公式 GitHub Actions テンプレートで自動ビルド・テスト・公開パイプラインを数行で構築 

    • 相互参照(Cross Reference) & 自動番号付け
      図表・数式・セクション・コードリストを自動で番号付けし相互リンクを生成 (Cross References)

    画像
    https://quarto.org/

    2.環境構築

     本書ではVS Code+JuterNotebook+Python環境を使用します。Quartoに直接関係ない部分は事前に環境構築済みとして進めます。

    2-1.アプリのインストール

     「Quarto.org - Get Started page」からダウンロードしてインストーラーを実行します。

    画像
    図 Get Startedページ

     セットアップ後は(Windows PCは)コマンドプロンプトでquartoコマンドが使用可能です。参考までにコマンドを実行し動作を確認しました。

    [Terminal(CMD)]
    quarto --version
    
    [OUT]
    1.7.30
    [Terminal(CMD)]
    
    [OUT]
    Quarto 1.7.30
    [>] Checking environment information...
          Quarto cache location: C:\Users\kiyo\AppData\Local\quarto
    [>] Checking versions of quarto binary dependencies...
          Pandoc version 3.6.3: OK
          Dart Sass version 1.85.1: OK
          Deno version 1.46.3: OK
          Typst version 0.13.0: OK
    [>] Checking versions of quarto dependencies......OK
    [>] Checking Quarto installation......OK
          Version: 1.7.30
          Path: C:\Users\kiyo\AppData\Local\Programs\Quarto\bin
          CodePage: 932
    
    [>] Checking tools....................OK
          TinyTeX: (not installed)
          Chromium: (not installed)
    
    [>] Checking LaTeX....................OK
          Tex:  (not detected)
    
    [>] Checking Chrome Headless....................OK
          Using: Chrome found on system
          Path: C:\Program Files\Google\Chrome\Application\chrome.exe
          Source: Windows Registry
    
    [>] Checking basic markdown render....OK
    
    [>] Checking Python 3 installation....OK
          Version: 3.8.12 (Conda)
          Path: C:/Users/kiyo/Anaconda3/python.exe
          Jupyter: 4.7.1
          Kernels: python3
    
    [>] Checking Jupyter engine render....OK
    
    [>] Checking R installation...........(None)
    
          Unable to locate an installed version of R.
          Install R from https://cloud.r-project.org/

    2-2.VS Code拡張機能の追加

     IDEはVS Codeを使用するため拡張機能「Quarto VS Code Extension」をインストールしました。

    画像

    ※JupyterLabを使用する方は「Quarto JupyterLab Extension」参照

    2-3.任意設定

     任意ですが、他にも追加の環境構築が必要になる場合はあります。

    • TeX(TinyTeX)

    【TeX(TinyTeX)のインストール】
     LaTeXのPDFコンパイルエンジンを追加でき、推奨はTinyTeXです。cmdから下記コマンドでインストール可能です。

    [Terminal]
    quarto install tinytex
    画像

    2-4.トラブルシューティング

     もしかすると役立つかもしれない記事載せておきます。

     2-4-1..qmdでプレビューエラー

     Jupyter上ででは問題ないがQuartoドキュメント(.qmd)ではPythonスクリプトのレンダー時に”Kernel died before replying to kernel_info”のエラーが出てプレビュー画面が出ない(レンダーできない)トラブルがありました。
     原因は「使用環境がJupyterカーネルに登録されていないため」でした。

     まずは”jupyter kernelspec list”でカーネルに登録されている環境を確認しました。もしこの中にQuartoで使用されている環境が登録されていないとエラーの原因かもしれません。

    [Terminal]
    jupyter kernelspec list
    
    [OUT]
      python3    C:\Users\kiyo\AppData\Roaming\jupyter\kernels\python3
    画像

     そこで下記手順で実施したところ、エラーが解決できました。

    1. 「使いたい環境 (= base2, Python 3.10)」をカーネル登録

      • 環境をアクティベート

      • 念のため”ipykernel”を更新

      • 名前を付けてカーネルを登録

    2. カーネルの追加確認:jupyter kernelspec list

    3. .qmd 側でカーネルを明示

      • YAMLオプションを”jupyter: <使用環境名>”に修正

    [Anaconda Prompt]
    conda activate base2
    pip install -U ipykernel
    python -m ipykernel install --user --name base2 --display-name "Python 3.10 (base2)"
    [Terminal]
    jupyter kernelspec list
    
    [OUT]
      base2      C:\Users\kiyo\AppData\Roaming\jupyter\kernels\base2
      python3    C:\Users\kiyo\AppData\Roaming\jupyter\kernels\python3

    3.Quickstart1:Hello, Quarto

     下記公式チュートリアルより、「Python×VS Code×Jupyter」を使用してQuartoを触ってみます。

    1. Tutorial: Hello, Quarto

    2. Tutorial: Computations

    3. Tutorial: Authoring

    画像
    図 Hello, Quarto

     Quickstartで基礎を学んだら、自分が欲しいアウトプットに向かって学習します。参考例は下記の通りです。

    • Presentations:PowerPoint、Beamer、Revealjsのプレゼンテーションを、ドキュメントの作成と同じ構文で作成できます。

    • Websites:ドキュメントのコレクションをウェブサイトとして公開します。ウェブサイトは、複数のナビゲーションと全文検索をサポートしています。

    • Blogs:約ページ、柔軟な投稿リスト、カテゴリ、RSSフィード、20種類以上のテーマを備えたブログを作成できます。

    • Books:印刷形式(PDF、MS Word)およびオンライン形式(HTML、ePub)で書籍や原稿を作成できます。

    • Interactivity:読者がコンセプトやデータをより深く探求できるよう、インタラクティブな要素を盛り込むことができます。

    3-1.Rendering

     「Tutorial: Hello, Quarto」から進めていきます。

    <新規ファイル作成>
     まず新規でJupyter Notebookを作成し、ファイル名”hello.ipynb”で保存します。VS Codeならコマンドパレットを開き(Ctrl+Shift+P)、「新しいJupyter Notebook」を選択します。

    画像

    <スクリプト作成>
     マークダウンとコードブロックを作成し、下記コードを記載します。コメントは以下の通り(詳細用語は後述)。

    • 最初のマークダウンブロックにはYAML Optionsを記載

      • 書式があり、例としてtitle:の後ろに半角スペースが無いとエラーになります

      • "code-fold"で出力時のコードブロックの開閉が可能

    • コードセル内の”#|”コマンドはYAMLで書かれたセルオプション

    [マークダウンブロック]
    ---
    title: "Quarto Basics"
    format:
      html:
        code-fold: true
    jupyter: python3
    ---
    [コードブロック]
    #| label: fig-polar
    #| fig-cap: "A line plot on a polar axis"
    
    import numpy as np
    import matplotlib.pyplot as plt
    
    r = np.arange(0, 2, 0.01)
    theta = 2 * np.pi * r
    fig, ax = plt.subplots(subplot_kw={'projection': 'polar'})
    ax.plot(theta, r)
    ax.set_rticks([0.5, 1, 1.5, 2]) 
    ax.grid()
    plt.show()
    画像

    <レンダー>
     VS Codeでターミナルを開き(Ctrl+@)、作業ディレクトリを合わせて下記Quartoコマンドを実行するとノートブックがレンダーされます。

    [Terminal]
    quarto render hello.ipynb --to html
    [OUT]
    pandoc 
      to: html
      output-file: hello.html     
      standalone: true
      section-divs: true
      html-math-method: mathjax   
      wrap: none
      default-image-extension: png
      variables: {}
      variables: {}
    
    metadata
      document-css: false
      link-citations: true
      date-format: long
      lang: en
      title: Quarto Basics
      jupyter: python3
    
    Output created: hello.html
    画像

     出力されたHTMLをブラウザで開くとインタラクティブで綺麗なドキュメントが生成されました。

    画像

     下記Quatroコマンドを実行するとdocxが出力できます。

    [Terminal]
    quarto render hello.ipynb --to docx
    画像

    3-2.Authoring

     編集・校正中(Authoring)に状態確認したい場合、毎回レンダーで出力するのは手間です。
     "quarto preview"コマンドで簡単に出力結果を確認できます。実行すると指定されたlocalhostのポートからブラウザで出力確認できます。

    [Terminal]
    quarto preview hello.ipynb
    [OUT]
    pandoc 
      to: html
      output-file: hello.html
      standalone: true
      section-divs: true
      html-math-method: mathjax
      wrap: none
      default-image-extension: png
      variables: {}
    
    metadata
      document-css: false
      link-citations: true
      date-format: long
      lang: en
      title: Quarto Basics
      jupyter: python3
    
    Output created: hello.html
    
    Watching files for changes
    Browse at http://localhost:5704/
    画像

     VS Code内に表示される場合はコマンドパレットから「Quatro; Preview」(Ctrl+Shift+K)を選択します。ターミナルに”Quatro Preview”アイコンがあれば、右側にレンダーされた画面が表示されます。

    画像
    画像

    4.Quickstart2:Computations

    4-1.オプション調整

     「Tutorial: Computations」より、いくつかのYAMLオプションを触り出力を調整してみます。
     まず「Download computations.ipynb」からサンプルファイルをダウンロードし、プレビューまで表示しておきます。

    [computations.ipynb]
    ---
    title: "Quarto Computations"
    jupyter: python3
    ---
    
    ## NumPy
    
    import numpy as np
    a = np.arange(15).reshape(3, 5)
    a
    
    ## Matplotlib
    
    import matplotlib.pyplot as plt
    
    fig = plt.figure()
    x = np.arange(10)
    y = 2.5 * np.sin(x / 20 * np.pi)
    yerr = np.linspace(0.05, 0.2, 10)
    
    plt.errorbar(x, y + 3, yerr=yerr, label='both limits (default)')
    plt.errorbar(x, y + 2, yerr=yerr, uplims=True, label='uplims=True')
    plt.errorbar(x, y + 1, yerr=yerr, uplims=True, lolims=True,
                 label='uplims=True, lolims=True')
    
    upperlimits = [True, False] * 5
    lowerlimits = [False, True] * 5
    plt.errorbar(x, y, yerr=yerr, uplims=upperlimits, lolims=lowerlimits,
                 label='subsets of uplims and lolims')
    
    plt.legend(loc='lower right')
    plt.show(fig)
    
    ## Plotly
    
    import plotly.express as px
    import plotly.io as pio
    gapminder = px.data.gapminder()
    gapminder2007 = gapminder.query("year == 2007")
    fig = px.scatter(gapminder2007, 
                     x="gdpPercap", y="lifeExp", color="continent", 
                     size="pop", size_max=60,
                     hover_name="country")
    fig.show()
    画像

     下記セルオプションを設定し、体裁を変えてみます。詳細はリファレンス参照のこと

    1. echo: false:コードブロックを全て隠し、出力のみ表示

      • echo: true:セルオプション(#|)として設定すれば個別で表示可能

    2. code-fold:コードセルの折りたたみを追加

      • code-tools: true:折り畳みを一括OPEN/CLOSE

    3. label:相互参照用の内部識別子

      • 画面で文字列など確認できないが、別の場所から参照できる機能

    4. fig-cap:図のキャプション

    【echo:コードブロックの表示】
     "echo: false"オプション追加で、コードブロックが全て消えました。

    [computations.ipynb]
    ---
    title: "Quarto Computations"
    execute:
        echo: false
    jupyter: python3
    ---
    画像

     NumPyスクリプトがあるコードブロックにセルオプション”#| echo: true”を追加するとこのコードのみ表示されます。

    [computations.ipynb]
    ---
    title: "Quarto Computations"
    execute:
        echo: false
    jupyter: python3
    ---
    
    ## NumPy
    
    #| echo: true
    import numpy as np
    a = np.arange(15).reshape(3, 5)
    a
    画像

    【code-fold:コードブロックの折り畳み】
     (前のechoは削除し)、"code-fold: true"オプション追加で、コードブロックを折りたたむことが出来ます。

    [computations.ipynb]
    ---
    title: "Quarto Computations"
    format: 
        html:
            code-fold: true
    jupyter: python3
    ---
    画像

     更に"code-tools: true"オプション追加すると、コードブロックを一括で開閉できるBOXが現れます。

    [computations.ipynb]
    ---
    title: "Quarto Computations"
    format: 
        html:
            code-fold: true
            code-tools: true
    jupyter: python3
    ---
    画像

    【label/fig-cap:参照およびキャプション追加】
     labelで相互参照用の識別子を追加し、fig-capでキャプションを追加しました。
    ※参考より”fig.set_size_inches(12, 7)”追加で図の体裁も調整

     結果として追加したキャプションがプレビューに反映されることを確認しました。

    [computations.ipynb]
    #| label: label1
    #| fig-cap: "ここがfig-capの部分"
    import matplotlib.pyplot as plt
    
    fig = plt.figure()
    fig.set_size_inches(12, 7)
    x = np.arange(10)
    y = 2.5 * np.sin(x / 20 * np.pi)
    yerr = np.linspace(0.05, 0.2, 10)
    
    plt.errorbar(x, y + 3, yerr=yerr, label='both limits (default)')
    plt.errorbar(x, y + 2, yerr=yerr, uplims=True, label='uplims=True')
    plt.errorbar(x, y + 1, yerr=yerr, uplims=True, lolims=True,
                 label='uplims=True, lolims=True')
    
    upperlimits = [True, False] * 5
    lowerlimits = [False, True] * 5
    plt.errorbar(x, y, yerr=yerr, uplims=upperlimits, lolims=lowerlimits,
                 label='subsets of uplims and lolims')
    
    plt.legend(loc='lower right')
    plt.show(fig)
    画像

    4-2.マルチ画面

     Plotlyの部分を下記で実行すれば2画面が並列で表示されます。より詳細は「Figures」参照のこと

    • fig-subcap:複数の出力を サブ図 として扱うためのオプション

    • layout-ncol:並べ方を指定

    • column:図を本文カラムより外側まで広げる

    [computations.ipynb]
    #| label: fig-gapminder
    #| fig-cap: "Life Expectancy and GDP"
    #| fig-subcap:
    #|   - "Gapminder: 1957"
    #|   - "Gapminder: 2007"
    #| layout-ncol: 2
    #| column: page
    
    import plotly.express as px
    import plotly.io as pio
    gapminder = px.data.gapminder()
    def gapminder_plot(year):
        gapminderYear = gapminder.query("year == " + 
                                        str(year))
        fig = px.scatter(gapminderYear, 
                         x="gdpPercap", y="lifeExp",
                         size="pop", size_max=60,
                         hover_name="country")
        fig.show()
        
    gapminder_plot(1957)
    gapminder_plot(2007)

    ※私の環境では”Jupyter Notebook Renderers”を入れても表示されなかったためPlotlyでの検証はあきらめます。(下記参考になるかも)

    5.Quickstart3:Authoring

     Quartoでは様々な出力形式(output formats.)をサポートしています。
     前はHTMLだけ使用しましたが、「Tutorial: Authoring」より他の出力形式(Output Formats)を試していきます。

    1. 複数フォーマットを一括レンダー

    2. セクション

    3. 数式

    4. 引用 (Citations)

    5. 相互参照(Cross References)

    6. 注意書きの追加(Callouts)

    7. レイアウト(Article Layout)

    【複数フォーマットを一括レンダー(Rendering)】
     notebookファイルのフォーマットにHTML, PDF, Docxのフォーマットを指定し、"quarto render <ipynbファイル>"コマンドを実行すると、指定したフォーマットのファイルが一括で出力されました。

    [output_format.ipynb]
    ---
    title: "Output Formatsの練習"
    author: "KIYO"
    toc: true
    number-sections: true
    highlight-style: pygments
    format: 
        html:
            code-fold: true
            html-math-method: katex
        pdf:
            geometry:
                - top=30mm
                - left=30mm
        docx: default
    jupyter: python3
    ---
    [terminal]
    quarto render output_format.ipynb
    画像
    画像

    【セクション(Sections)】
     目次の追加(toc: table of contents)やセクション見出しの番号付(number-sections)もオプション設定で簡単に実行できます。

    [section.ipynb]
    ---
    title: "Sectionの練習"
    author: "KIYO"
    date: "2025/5/12"
    toc: true
    number-sections: true
    ---
    
    ## Colors
    
    - Red
    - Green
    - Blue
    
    ## Shapes
    
    - Square
    - Circle
    - Triangle
    
    ## Textures
    
    - Smooth
    - Bumpy
    - Fuzzy
    画像

    【数式(Equations)】
     MarkdownブロックにLaTeX式を入れると数式が表示されます。
     インライン式は”$…$”、新規行で追加は”$$…$$”を使用します。

    [section.ipynb]
    $E = mc^{2}$
    
    $$E = mc^{2}$$
    画像

    【引用 (Citations)】
     Quartoはbibliography file(BibTexかCSL)をサポートしており”bibliography YAML metadata option.”を使用することで簡単にbibliography(参考文献)を引用できます。手順は下記の通りです。

    1. 事前にBiBTeXでbibファイル作成

      • VS Codeで拡張子は対応済み

      • 記法の説明は省略

    2. YAMLオプションでbibliography:<bibファイルPath>を指定

    3. 参照したい文献を”@citeid”構文でMarkdownブロックに記載

    4. 体裁調整のため最後の行に”## References”で見出しを付ける

    [bib.ipynb]
    ---
    title: "Bibliography(参考文献)の練習"
    format: html
    bibliography: test_ref.bib
    jupyter: python3
    ---
    
    ## Overview
    
    Knuth says always be literate [@knuth1984].
    
    1+1
    
    ## Reference
    [test_ref.bib]
    @article{knuth1984,
      author  = {Donald E. Knuth},
      title   = {Literate Programming},
      journal = {The Computer Journal},
      year    = {1984},
      volume  = {27},
      number  = {2},
      pages   = {97--111}
    }
    画像

    <コラム:BIBTEXとは>
     BibTeXは、コンピュータサイエンスやその他の技術分野で広く使用されている文献管理ツールです。書籍、記事、会議論文などの文献を構造化された形式で保存・管理するために使用されます。この形式を使用して、さまざまな文書形式で自動的に参考文献リストを生成することができます。

    【相互参照(Cross Reference)】
     ”ラベルやキャプションを設定”し"@"を付けることで、数値、図表、数式、セクションなどを相互参照することが出来ます。

     今回はセクション、図、数式にそれぞれラベル・キャプションを付け、@で参照しました。

    画像
    [crossref.ipynb※matplotlibの部分だけコードブロックで他はMarkdown]
    ---
    title: "Cross Reference(クロスリファレンス)の練習"
    format: html
    jupyter: python3
    ---
    
    ## Overview
    
    See @fig-simple in @sec-plot for a demonstration of single plotting.
    
    See @eq-stddev to better understand standard deviation.
    
    ## Plot {#sec-plot}
    
    #| label: fig-simple
    #| fig-cap: Simple plot
    import matplotlib.pyplot as plt
    plt.plot([1, 2, 3, 4, 5, 6])
    plt.show()
    
    ## Equation {#eq-equation}
    
    $$
    S = \sqrt{\frac{1}{N} \sum_{i=1}^{N} (x_i - \bar{x})^2}
    $$ {#eq-stddev}
    画像

    【注意書きの追加(Callouts)】
     追加の注意を引き付けるためにCalloutsを使用できます。

    [callout.ipynb]
    ::: {.callout-note}
    Note that there are five types of callouts, including:
    'note', 'tip', 'warning', 'caution', and 'important'.
    :::
    画像
    画像

    【レイアウト(Article Layout)】
     Quartoの記事本文のデフォルト幅は読みやすさを考慮して約700ピクセルです。Quartoでは”reference-location”オプションや"column: screen-inset cell"オプションを使って、余白部分の調整・利用が可能です。

    • reference-location:脚注を右余白に配置するように指定

    • column: screen-inset cell:図を画面の幅いっぱいに配置し、小さく挿入することを指示

    [layout.ipynb]
    ---
    title: "Article Layoutの練習"
    format: html
    reference-location: margin
    jupyter: python3
    ---
    
    ## Placing Colorbars
    
    Colorbars indicate the quantitative extent of image dta. Placing in a figure is non-trivial because room needs to be made for them.
    The simplest case is just attaching a colorbar to each axes:^[See the Matplotlib Galleryto explore colorbars] further].
    
    #| code-fold: true
    #| column: screen-inset
    import matplotlib.pyplot as plt
    import numpy as np
    
    fig, axs = plt.subplots(2,2)
    fig.set_size_inches(20, 8)
    cmaps = ['RdBu_r', 'viridis']
    for col in range(2):
        for row in range(2):
            ax = axs[row, col]
            pcm = ax.pcolormesh(np.random.rand(20, 20) * (col+1),
                                cmap=cmaps[col])
            fig.colorbar(pcm, ax=ax)
            
    plt.show()
    画像

    6.Quartoドキュメント(.qmd)

     Quarto文章(.qmd)を使用してドキュメントを作成してみます。コマンドパレット(Ctrl+Shift+P)からQuartoの新規ドキュメント作成します。

    画像

    6-1.Markdownで書いてみる

     Marpで紹介したMarkdownと近い内容を記載して比較してみます。

     結果は以下の通り。

    • Markdown記法通りに文章作成できた。

    • 数式や画像貼り付けも問題なくできた。

    • `(バッククォート)によるコードブロックは追加できたが、```での領域までは作れなかった

    • 絵文字の表示がうまくいかなかった

    [test.qmd]
    ---
    title: "test3"
    author: KIYO
    date: "2025/5/12"
    format: html
    ---
    
    # 見出し1
    ## 見出し2
    ### 見出し3
    
    通常のテキスト
    
    [作成ノート(+予定)一覧 by KIYO](https://note.com/kiyo_ai_note/n/nd49cc7237ceb)
    
    * 箇条書き1
    * 箇条書き2
    1. 番号付きリスト1
    2. 番号付きリスト2
    
    ---
    
    $$
    f(x) = \frac{1}{\sqrt{2\pi\sigma^2}} e^{-\frac{(x-\mu)^2}{2\sigma^2}}
    $$
    
    ![Image](https://assets.st-note.com/img/1661919379413-vE07W5wCwS.jpg?width=2000&height=2000&fit=bounds&quality=85)
    
    ---
    
    (`---`) (`test`) 
    
    :satisfied: :smile: :angry: :scream: :dog: :cat: :pig: :monkey_face: :tiger: :bear: :koala: :penguin: :frog: :octopus: :fish: :whale2: :snail: :turtle:
    
    ![bg right 50%](https://assets.st-note.com/img/1661919379413-vE07W5wCwS.jpg?width=2000&height=2000&fit=bounds&quality=85)
    
    
    ```
    # Slide 1
    
    $$
    f(x) = \frac{1}{\sqrt{2\pi\sigma^2}} e^{-\frac{(x-\mu)^2}{2\sigma^2}}
    $$
    ---
    # Slide 2
    文字も書ける
    ```
    画像

    6-2.Pythonスクリプトの埋め込み

     下記コードを記載すればレンダーとプレビュー(Ctrl+Shift+K)ができると思います。

    1. 頭に---で区切られたYAMLオプションを記載

      • 私のPCでは”base2”という名前の仮想環境カーネルを登録したため"jupyter: base2"と記載しました

    2. ```{python}と```で囲われた領域にスクリプトを記載すると埋め込める

      • この中に"#|"でコードオプションの追加可能

    [hello.qmd]
    ---
    title: "Quarto Basics"
    format:
      html:
        code-fold: true
    jupyter: base2
    ---
    
    For a demonstration of a line plot on a polar axis, see @fig-polar.
    
    ```{python}
    #| label: fig-polar
    #| fig-cap: "A line plot on a polar axis"
    
    import numpy as np
    import matplotlib.pyplot as plt
    
    r = np.arange(0, 2, 0.01)
    theta = 2 * np.pi * r
    fig, ax = plt.subplots(
      subplot_kw = {'projection': 'polar'} 
    )
    ax.plot(theta, r)
    ax.set_rticks([0.5, 1, 1.5, 2])
    ax.grid(True)
    plt.show()
    ```
    画像

    7.スライドの作成

     Quartoはスライドを作成するための様々なフォーマットをサポートしています。

     技術ブログでもスライド作成要領が紹介されていますのでこれらを参考にしながらスライドを作成していきます。

    7-1.Quickstart

     Jupyterとqmdファイルを触りながら違いがあるかも確認していきます。
     初めにシンプルなスライドとして見出し2(##)で区切った2枚のスライドを作成しました。

    [slide_1.ipynb(.qmd)]
    ---
    title: "Habits"
    author: "John Doe"
    format: revealjs
    ---
    
    ## Getting up
    
    - Turn off alarm
    - Get out of bed
    
    ## Going to sleep
    
    - Get in bed
    - Count sheep
    画像
    画像

     見出し1(#)でも区切ることができ、枚数も複数ページ作成できます。

    [slide_2.ipynb(.qmd)]
    ---
    title: "Habits"
    author: "John Doe"
    format: revealjs
    ---
    
    # In the morning
    
    ## Getting up
    
    - Turn off alarm
    - Get out of bed
    
    ## Breakfast
    
    - Eat eggs
    - Drink coffee
    
    # In the evening
    
    ## Dinner
    
    - Eat spaghetti
    - Drink wine
    
    ## Going to sleep
    
    - Get in bed
    - Count sheep
    画像
    画像

    8.ユーザーガイド

     公式ではガイドが公開されておりますのでご参考までに。

    1. 執筆 (Authoring):Markdownの文章作成

      • マークダウン基礎 (Markdown Basics)

      • 図 (Figures)

      • 表 (Tables)

      • ダイアグラム (Diagrams)

      • 引用 (Citations)

      • 相互参照 (Cross‑References)

      • 学術執筆 (Scholarly Writing)

      • Article Layout

      • Shortcodes

    2. 計算 (Computations):コードの出力表示

      • Python を使う (Using Python)

      • R を使う (Using R)

      • Julia を使う (Using Julia)

      • Observable を使う (Using Observable)

      • 実行オプション (Execution Options)

      • パラメータ (Parameters)

    3. ツール (Tools):お気に入りのツール使用

      • JupyterLab

      • RStudio IDE

      • VS Code

      • Neovim (Neovim)

      • テキストエディタ (Text Editors)

      • Visual Editor

    4. ドキュメント (Documents):多種なフォーマットで作成

      • HTML

      • PDF

      • MS Word

      • Typst

      • Markdown

      • すべてのフォーマット (All Formats)

    5. プレゼンテーション (Presentations):コードや内容表示

      • 概要 (Overview)

      • Reveal JS

      • PowerPoint (PowerPoint)

      • Beamer (Beamer)

    6. ダッシュボード (Dashboards):ダッシュボードにデータ公開

      • 概要 (Dashboard Basics)

      • レイアウト (Layout)

      • データ表示 (Data Display)

      • インタラクティブ機能 (Interactivity)

      • デプロイ (Deployment)

    7. ウェブサイト (Websites):ウェブサイトやブログ作成

      • ウェブサイト作成 (Creating a Website)

      • サイトナビゲーション (Website Navigation)

      • ブログ作成 (Creating a Blog)

      • サイト検索 (Website Search)

      • サイトリスト (Website Listings)

    8. 書籍 (Books):本や原稿の作成

      • 書籍作成 (Creating a Book)

      • 書籍構造 (Book Structure)

      • 書籍相互参照 (Book Crossrefs)

      • 出力カスタマイズ (Customizing Output)

    9. 原稿 (Manuscripts):ノートブック初の学術論文の執筆と出版

      • はじめに (Getting Started)

      • Authoring Manuscripts

      • 原稿公開 (Publishing Manuscripts)

      • 原稿の利用 (Using Manuscripts)

    10. インタラクティビティ (Interactivity):双方向性で読者を引き込む

      • 概要 (Overview)

      • Observable JS (Observable JS)

      • Shiny (Shiny)

      • Widgets (Widgets)

      • コンポーネントレイアウト (Component Layout)

    11. 公開 (Publishing):文章やサイトの公開

      • 公開の基本 (Publishing Basics)

      • Quarto Pub (Quarto Pub)

      • GitHub Pages (GitHub Pages)

      • Posit Connect (Posit Connect)

      • Posit Cloud (Posit Cloud)

      • Netlify (Netlify)

      • Confluence (Confluence)

      • その他サービス (Other Services)

    12. プロジェクト (Projects):プロジェクトへのスケールアップ

      • プロジェクト基本 (Project Basics)

      • 実行管理 (Managing Execution)

      • プロジェクトプロファイル (Project Profiles)

      • 環境変数 (Environment Variables)

      • プロジェクトスクリプト (Project Scripts)

      • 仮想環境 (Virtual Environments)

    13. 上級 (Advanced):高度なツールで文書を洗練させる

      • インクルード (Includes)

      • 変数 (Variables)

      • ページレイアウト (Page Layout)

      • ドキュメント言語 (Document Language)

      • 条件付きコンテンツ (Conditional Content)

      • ノートブックフィルタ (Notebook Filters)

    9.リファレンス

     フォーマット、コードセルやプロジェクトなどのオプションリファレンスは下記の通り。

    1. ドキュメント

      • HTML

      • PDF

      • MS Word

      • Typst

      • Open Office

      • ePub

    2. プレゼンテーション

      • Reveal JS

      • PowerPoint

      • Beamer 

    3. Markdown

      • GitHub 

      • CommonMark 

      • Markua 

    4. Wiki

      • MediaWiki 

      • DokuWiki 

      • ZimWik

      • Jira Wiki

      • XWiki 

    5. コードセル (Code Cells)

      • Jupyter (Jupyter)

      • Knitr

      • Observable JS 

    6. プロジェクト (Projects)

      • オプション (Options)

      • ウェブサイト (Websites)

      • 書籍 (Books)

      • 原稿 (Manuscripts)

    7. その他 (メタデータ)

      • 日付 (Dates)

      • グロブ (Globs)

      • 引用 (Citations)

      • 相互参照 (Cross‑References)

      • ブランド (Brand)

    9-1.OPMLオプション

     OPML (Outline Processor Markup Language)はアウトライン用のXMLフォーマットです。

    9-2.Code Cells/Jupyter

     コードセルのオプションは実行方法(execution)と出力形式(Output)を制御します。各オプションは、ブロック冒頭のコメントとして指定します。

    ```
    #| label: fig-polar
    #| echo: false
    #| fig-cap: "A line plot on a polar axis"
    ```

    【属性 (Attributes)】

    • label — セルの一意ラベル。他セルからの参照に使用(例: fig-samples, tbl-summary)。

    • classes — セルコンテナに付与する CSS クラス。

    • renderings — レンダリング名の配列(例: [light, dark])。

    • tags — ノートブックセルのタグ配列。

    • id — ノートブックセル ID。未指定時は label があればそれが ID になる。詳細は JEP‑62。

    【コード出力 (Code Output)】

    • eval — コード実行を制御

      • true (既定) : 実行する

      • false : 実行せずコードのみ出力

      • [ ... ] : knitr で式番号を選択実行

    • echo — ソースコード表示

      • true (HTML などで既定) : 表示

      • false (Revealjs などで既定) : 非表示

      • fenced :  枠付きで表示

      • [ ... ] : 行番号で選択表示 (knitr)

    • code-fold — <details> でコードを折りたたむ

      • true : 折りたたむ

      • false (既定) : 折りたたまない

      • show : 折りたたむが初期展開

    • code-summary — code-fold 時に見出しとして表示するテキスト。

    • code-overflow — 横長コードの扱い scroll / wrap。

    • code-line-numbers — 行番号表示 true/false。Revealjs では行強調も可能。

    • lst-label — コードリスト用ラベル(相互参照)。

    • lst-cap — コードリストのキャプション。

    【セル出力 (Cell Output)】

    • output — 実行結果の扱い true / false / asis (Markdown としてそのまま)。

    • warning — 警告を出力に含めるか。

    • error — エラーを出力に含めるか (true でも実行は続行)。

    • include — コードも結果も含めない場合の一括指定。

    • panel — 出力パネル種別 tabset, input, sidebar, fill, center。

    • output-location — Revealjs での配置 default, fragment, slide, column, column-fragment。

    【図 (Figures)】

    • fig-cap — 図キャプション。

    • fig-subcap — サブキャプション。

    • fig-link — 図全体のリンク先。

    • fig-align — 横位置 default, left, right, center。

    • fig-alt — HTML alt テキスト。

    • fig-env — LaTeX 図環境名。

    • fig-pos — LaTeX 図配置 (H など)。false で指定なし。

    • fig-scap — LaTeX 用短キャプション。

    【表 (Tables)】

    • tbl-cap — 表キャプション。

    • tbl-subcap — サブキャプション。

    • tbl-colwidths — 列幅指定 auto / true / false / [40,30,30]。

    • html-table-processing — none を指定すると HTML テーブルをそのまま保持。

    【パネルレイアウト (Panel Layout)】

    • layout — 出力を 2D 配列で配置。例 [[3,3],[1]]。負値で余白。

    • layout-ncol — 列数を自動調整。

    • layout-nrow — 行数を自動調整。

    • layout-align — 横位置 default, left, right, center。

    • layout-valign — 縦位置 default, top, center, bottom。

    【ページカラム (Page Columns)】

    • column — 出力を配置するページカラム。

    • fig-column — 図のページカラム。

    • tbl-column — 表のページカラム。

    • cap-location — キャプション位置 top, bottom, margin。

    • fig-cap-location — 図キャプション位置。

    • tbl-cap-location — 表キャプション位置。



    参考資料

    別添1:Quarto

    別添2:技術ブログ

    別添3:Markdown

    別添4:その他

    あとがき

     使いながら出ないと覚えるのきつい

     


     
     

    KIYO

     
     
    普段は製造業で企画/開発/設計しております。記事はプログラミング・機械学習、IoT関係の記事をメインで作成し、なるべく1つの記事で知りたいことを網羅していきます。内容は学術的より実装・アウトプット(ほしくなるもの)を重視して作成しています。 面白そうな仕事があればやりたいです!

    あなたへのおすすめ