Lilypond有自带的谱文混排的工具lilypond-book,但是作为外行,一直很难搞清楚这个操作是怎样做的。很久之前请教过别人,但介于我的个人能力,只有粗浅理解,操作不得要领。在许多信息的拼凑之后,终于掌握了lilypond-book的基本使用方法。虽然这个方法极度不方便,但也算对lilypond的了解多了一分,所以还是做了记录

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

lilypond-book的说明文档可以见

LilyPond Application Usage: 3. Running lilypond-book

里面全是英文,看着也晕了好久。工作原理大概是建立 lytex 文件-----> (经过lilypond-book的运行)建立 tex 文件-----> 由tex里的pdflatex指令编译成pdf文件

这个流程真的太劝退了……先不管这个,以下几个部件是必备的:

1 必备部件

1. lilypond本体,来自 LilyPond – 人人的乐谱软件: 下载

2. lilypond-book是python文件,所以最好装一个python;

3. tex的运行组件,我个人下载的是texlive,来自 Index of /CTAN/systems/texlive/Images/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

有了这三项之后,开始部署:

2 部署

2.1 编辑系统环境变量

因为lilypond-book要在命令行模式下执行,而命令行模式默认的指令是不包括它的,所以需要先把lilypond-book设置到环境变量里

我知道对于没用过命令行的人来说这个表述看着就想死……直接讲设置方法吧。在开始菜单的空白处输入“编辑系统环境变量”

进入之后,按下图的顺序,跟着红色箭头走:

1. 进入“环境变量”

2. 点击Path,选择“编辑”

3. 编辑页面里选择“新建”

这时候就是要把lilypond的执行文件的所在文件夹的地址输进去。在lilypond的快捷方式那里点鼠标右键,选择“属性”,按红色箭头点开,这就是文件所在的文件夹。

注意:打开的文件夹先别关掉,一会儿要用

点击红色箭头所在位置,就得到文件夹的地址

把它复制到之前的“编辑环境变量”里,点“确定”就可以了

2.2 修改lilypond-book文件名

是的,lilypond-book 需要修改文件名……回到刚才的文件夹,右键 lilypond-book 这个文件,重命名为 lilypond-book.py

接下来就是输入与编译

3 输入与编译

3.1 创建 lytex 文件

首先打开编辑器,这个就不用介绍了。输入lilypond官方提供的示例文件,来自 LilyPond Application Usage: 3.6 lilypond-book templates

下面是代码

\documentclass[]{article}
\begin{document}
Normal LaTeX text.
\begin{lilypond}  \relative {     a'4 b c d  }\end{lilypond}
More LaTeX text, and options in square brackets.
\begin{lilypond}[fragment,relative=2,quote,staffsize=26,verbatim]d4 c b a\end{lilypond}\end{document}

然后保存为 lilypond-book.lytex,保存地址最好要是英文地址,记得打开所在文件夹!

3.2 启动 lilypond-book 编译

不要退出这个文件夹,在空白处按住shift键,点右键会看到“在此处打开Powershell窗口”的字样,点开它就到了对应目录下的命令行窗口

接下来的操作就和lilypond官方教程里的一致了,参考下面地址的Processing一节

LilyPond Application Usage: 3.1 An example of a musicological document

进入文抄公时间:

3.2.1 编译tex文件

lilypond-book --output=out --pdf lilybook.lytex

然后就会弹出一坨执行的文字……执行后就发现原来的文件夹里多了一个叫out的文件夹,这是因为刚才输入的指令里,已经把输出的文件夹设置在了out这个文件夹里。

点开out这个文件夹,就能看到lilybook.tex已经生成完毕。这样就完成了从 lytex 到 tex 的转换。

3.2.2 编译pdf文件

现在进入out文件夹,在空白处再次施展shift+右键,启动这个文件夹下的Powershell窗口,输入

pdflatex lilybook

又是一坨文字之后,就可以看到文件夹里多了一堆文字,其中就包括了期待已久的lilybook.pdf!

点开之后就可以看到编译的结果

谱文混排的工序到此告一段落。

4 总结

1. 整个lilypond-book的配置中有若干对新手极不友好的操作,例如设置环境变量、在窗口下开启Powershell,还有命令行的输入。

除了设置环境变量外,每次生成一个lytex都要把步骤3成套重新操作一次,也是醉了,不知道有没有什么办法把这个操作集成起来。

2. 在3.2.2 中,编译pdf文件的代码时pdflatex,这就说明lytex依赖pdflatex这个编码器。而latex的编码器那么多,其他编码器是不是够用就不清楚了,还有待测试

3. 目前知道Latex里面也有集成lilypond代码一起编译pdf文件的宏包,叫 lyluatex,详见 CTAN: Package lyluatex 。但lyluatex的编译到现在我都还没实现……还是希望能直接在latex内部完成编译更好一点

4. 此路目前死路一条,谱文混排摸索未完待续……

谱文混排之lilypond-book的更多相关文章

  1. Lilypond+TexLive(LuaLatex+lyluatex)+VS Code实现谱文混排

    没想到发文章反而更难被预览了,那就复制一份到随笔里好了. 多次尝试之下,终于实现了现阶段谱文混排的最理想方式: 1. 综合Latex的排版(还有广泛适用人群)的优势以及Lilypond的美观优势: 2 ...

  2. bootstrap-图文混排 media

    <!-- media 图文混排 media-left(right) 图片的区域 在左边显示(右边) media-body 内容区域 media-heading 内容区域里的标题 media-mi ...

  3. 【代码笔记】iOS-图文混排(HBLabelDemo)

    一,效果图. 二,工程图. 三,代码. ViewController.h #import <UIKit/UIKit.h> @interface ViewController : UIVie ...

  4. 【转】关于FLASH中图文混排聊天框的小结

    原文链接 图文混排也是FLASH里一个很古老的话题了,我们不像美国佬那样游戏里面聊天框就是聊天框,全是文字干干净净,也不像日本人发明了并且频繁地使用颜文字.不管是做论坛.做游戏,必定要实现的一点就是带 ...

  5. CoreText 实现图文混排

    CoreText 实现图文混排 相关博文推荐 IOS CoreText.framework - 基本用法 IOS CoreText.framework - 段落样子CTParagraphStyle h ...

  6. AS3聊天单行输入框图文混排完美实现

    几年前刚毕业.第一个游戏模块做的就是聊天.到如今.几个游戏写过几次聊天模块. 之前在4399做的<幻龙骑士>(又名<神骑士>),还有上周六刚上线的<疯狂的子弹>, ...

  7. CoreText实现图文混排

    CoreText的介绍 Core Text 是基于 iOS 3.2+ 和 OSX 10.5+ 的一种能够对文本格式和文本布局进行精细控制的文本引擎.它良好的结合了 UIKit 和 Core Graph ...

  8. Word 2010之简单图文混排

    所谓图文混排,就是指将图片与文本内容进行一定规律的排列,以让文档更加漂亮. 下面的示范是一个简单的将两副照片混排到文字当中的(图片与文本内容无关,仅供演示). 1. 打开Word,输入文本内容: 2. ...

  9. CoreText实现图文混排之文字环绕及点击算法

    系列文章: CoreText实现图文混排:http://www.jianshu.com/p/6db3289fb05d CoreText实现图文混排之点击事件:http://www.jianshu.co ...

随机推荐

  1. LeetCode352 将数据流变为多个不相交区间

    LeetCode352 将数据流变为多个不相交区间 1 题目 给你一个由非负整数 a1, a2, ..., an 组成的数据流输入,请你将到目前为止看到的数字总结为不相交的区间列表. 实现 Summa ...

  2. kvm安装window系统及使用NFS动态迁移

    验证是否开启虚拟化 # grep -E 'svm|vmx' /proc/cpuinfo - vmx is for Intel processors - svm is for AMD processor ...

  3. THUSC & 中考 & NOI 拉跨记

    THUSC 的拉胯记 时代比较久远了,可能有些事情记不清楚了. Day -\(\infty\) 本来说只有我.llsw.wxk过了审核,后来wy.lyc也搞了个体验营名额,于是和高二的一起集训. Da ...

  4. Vuex 基础

    其他章节请看: vue 快速入门 系列 Vuex 基础 Vuex 是 Vue.js 官方的状态管理器 在vue 的基础应用(上)一文中,我们已知道父子之间通信可以使用 props 和 $emit,而非 ...

  5. Frida-RPC调用

    Python Frida RPC 调用示例 JS_CODE var base64EncodeChars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrs ...

  6. 初学python-day4 字典(已更新完)

  7. Map中getOrDefault()与数值进行比较

    一般用哈希表计数时,value类型通常为Integer.如果想比较某个key出现的次数,使用get(key)与某个数值进行比较是有问题的.当哈希表中并不包含该key时,因为此时get方法返回值是nul ...

  8. [Beta]the Agiles Scrum Meeting 12

    会议时间:2020.5.27 21:00 1.每个人的工作 今天已完成的工作 成员 已完成的工作 issue yjy 帮助解决技术问题 tq 撰写技术博客 wjx 博客评分界面美化 dzx 博客评分界 ...

  9. [Beta]the Agiles Scrum Meeting 10

    会议时间:2020.5.25 21:00 1.每个人的工作 今天已完成的工作 成员 已完成的工作 issue yjy 暂无 tq 暂无 wjx 实现创建.显示博客作业功能 增加博客作业功能 dzx 实 ...

  10. 2021.10.26考试总结[冲刺NOIP模拟16]

    T1 树上的数 \(DFS\)一遍.结构体存边好像更快? \(code:\) T1 #include<bits/stdc++.h> using namespace std; namespa ...