Lilypond+TexLive(LuaLatex+lyluatex)+VS Code實現譜文混排

lilypond手殘粉發表於2021-11-24

沒想到發文章反而更難被預覽了,那就複製一份到隨筆裡好了。 

 

多次嘗試之下,終於實現了現階段譜文混排的最理想方式:

1. 綜合Latex的排版(還有廣泛適用人群)的優勢以及Lilypond的美觀優勢;

2. 在同一個編輯器裡完成輸入、與編譯與瀏覽成品;

3. 譜面程式碼可以像數學公式那樣有行間與多行顯示;

4. 不需要設定環境變數,不需要在命令列裡操作。

接下來就演示Lilypond、TexLive和VS Code三劍客合璧的全過程吧!

 

-----------------------------------

1. Lilypond安裝

 lilypond提供樂譜方面的排版

下載地址 LilyPond – 人人的樂譜軟體: 下載

 

2 TexLive

TexLive提供文章排版

2.1 TexLive 安裝

TexLive清華大學映象下載見 Index of /CTAN/systems/texlive/Images/ | 清華大學開源軟體映象站 | Tsinghua Open Source Mirror

iso檔案下載後直接雙擊開啟,按下圖紅色框位置雙擊即可安裝

  

2.2 lyluatex安裝

lyluatex是在Latex裡編譯lilypond程式碼的關鍵,所以必須安裝。另外,它只能在LuaLatex下編譯,這一點後面會顯示出來。

開啟 Tex Live Manager ,如下圖先選擇全部package,然後再搜尋lyluatex,如果顯示已經安裝,則不需要再專門安裝lyluatex

 

 

3 VS code

VS Code 整合 Latex 和 Lilypond 的編輯環境

3.1 VS code 安裝

先下載:下載 Visual Studio Tools - 免費安裝 Windows、Mac、Linux (microsoft.com)

然後下載中文語言支援包,點選方塊處,搜Chinese然後下載,如下圖

 

3.2 外掛Latex Workshop

Latex Workshop用於支援Latex的編譯和執行在vs code上執行

3.2.1 安裝

搜Latex,然後找到 Latex Workshop 下載

 

 

3.2.2 配置

按 Ctrl + Shift + P,調出命令介面,進入首選項

 

 

在大括號中複製下面程式碼(大括號本身不要複製進去),之後儲存設定

{
   // Latex Workshop設定,從這裡開始複製

    "latex-workshop.latex.autoBuild.run": "never",
    "latex-workshop.showContextMenu": true,
    "latex-workshop.intellisense.package.enabled": true,
    "latex-workshop.message.error.show": false,
    "latex-workshop.message.warning.show": false,
    "latex-workshop.latex.tools": [
        {
            "name": "lualatex",
            "command": "lualatex",
            "args": [
                "-synctex=1",
                "-interaction=nonstopmode",
                "-file-line-error",
                "-shell-escape",    //這個命令列在網上的Latex Workshop設定裡一般沒有,所以直接recipe會報錯
                "%DOCFILE%"
            ]
        }
    ],
       "latex-workshop.latex.recipes": [
        {
            "name": "LuaLaTeX",
            "tools": [
                "lualatex"
            ]
        },
    ],
  "latex-workshop.latex.clean.fileTypes": [
        "*.aux",
        "*.bbl",
        "*.blg",
        "*.idx",
        "*.ind",
        "*.lof",
        "*.lot",
        "*.out",
        "*.toc",
        "*.acn",
        "*.acr",
        "*.alg",
        "*.glg",
        "*.glo",
        "*.gls",
        "*.ist",
        "*.fls",
        "*.log",
        "*.fdb_latexmk"
    ],
        "latex-workshop.latex.autoClean.run": "onFailed",
        "latex-workshop.latex.recipe.default": "lastUsed",
        "latex-workshop.view.pdf.internal.synctex.keybinding": "double-click",
        "latex-workshop.view.pdf.external.viewer.command": "C:\\Program Files (x86)\\Adobe\\Acrobat DC\\Acrobat\\Acrobat.exe",
        //雙引號裡是pdf瀏覽器的執行檔案,可以根據實際情況更換 "latex-workshop.view.pdf.viewer": "tab"

  //複製到這裡結束 }

  

4 編譯檔案

先在vs code裡新建*.tex檔案,編寫程式碼:

\documentclass{article}

%% 開頭的設定可以確保中文隨便打,並且能支援用LuaLatex編譯。lyluatex只能通過LuaLatex來編譯
\usepackage[UTF8]{ctex}

%% 使用lyluatex巨集包,用以編譯lilypond語句
\usepackage{lyluatex}

% geometry巨集包可以用於靈活調整紙張大小
\usepackage{geometry}
\geometry{a4paper, scale=0.65}

%% 因為怕太密集,調整一下行距
\linespread{2.0}



%% 正文
\begin{document}
\title{使用lyluatex實現譜文混排}
\author{lilypond 手殘粉}

\maketitle


搭建好lilypond和latex的設定之後,就可以實現各種方式的打譜。例如:

只需要輸入 \textbackslash lilypond\{c' d' e'\},就能實現行中打譜 \lilypond{c' d' e'} 正如你所看到的那樣。

大括號裡的語法和lilypond裡的語法一致。例如,輸入\textbackslash lilypond\{  \textbackslash clef bass  \textbackslash omit Staff.TimeSignature
c' d' e'  \} 就可以看到變成\underline{低音譜號}以及\underline{去掉拍號}後\lilypond{\clef bass \omit Staff.TimeSignature c' d' e'}的打譜效果。

也可以使用\textbackslash begin\{lilypond\} 和 \textbackslash end\{lilypond\} 直接進入lilypond環境,像編輯數學公式一樣編輯樂譜。

%% 空了一行
\vspace*{0.5\baselineskip}


%% lilypond 環境

\begin{lilypond}
    music = \relative {
        c d e
    }
    \score {
        \new ChoirStaff \with {
            instrumentName = "2 Fl."
        } <<
        \new Staff \transpose c c' \music
        \new Staff {
                \clef bass
                \music
            }
        >>
    }
\end{lilypond}

這樣,既可以利用Latex的編排優勢,又可以利用lilypond的打譜優勢,lilypond笨拙的文字排版終於可以說拜拜了。

\end{document}

因為是tex檔案,建立後vs code的左側會出現tex字樣,點選它,然後在COMMANDS一欄裡點選Recipe: LuaLaTex

 

 最後選擇View in VSCode Tab,就可以看到成果了

 

 

相關文章