沒想到發文章反而更難被預覽了,那就複製一份到隨筆裡好了。
多次嘗試之下,終於實現了現階段譜文混排的最理想方式:
1. 綜合Latex的排版(還有廣泛適用人群)的優勢以及Lilypond的美觀優勢;
2. 在同一個編輯器裡完成輸入、與編譯與瀏覽成品;
3. 譜面程式碼可以像數學公式那樣有行間與多行顯示;
4. 不需要設定環境變數,不需要在命令列裡操作。
接下來就演示Lilypond、TexLive和VS Code三劍客合璧的全過程吧!
-----------------------------------
1. 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,就可以看到成果了