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. Schematics Tools(Schematics 工具)

    Schematics工具 # Process: 创建逻辑示意图 arcpy.CreateDiagram_schematics("", "", "&qu ...

  2. 【java】关键字this怎么用?

    摘至:https://www.php.cn/java/guide/462643.html java中this关键字的用法:1.当成员变量和局部变量重名时,在方法中使用this时,表示的是该方法所在类中 ...

  3. Vue3学习(六)之使用Vue3进行数据绑定及显示列表数据

    一.写在前面 说来还是比较惭愧的,从周二开始事就比较多,周三还电脑坏了,然后修电脑等等一些杂事,忙的团团转,因为周二.周三自己走的过多了,导致不敢直腰,周四卧床一天. 之前都听说<陈情令> ...

  4. 【UE4 C++】 Datatable 读写、导入导出 CSV/Json

    Datatable 读取行数据 1. 创建结构体 继承自 FTableRowBase USTRUCT(BlueprintType) struct FSimpleStruct :public FTabl ...

  5. 【UE4 设计模式】状态模式 State Pattern

    概述 描述 允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类. 其别名为状态对象(Objects for States),状态模式是一种对象行为型模式. 有限状态机(FSMs) ...

  6. airtest keyevent 按键速查表

  7. 【二食堂】Beta - Scrum Meeting 8

    Scrum Meeting 8 例会时间:5.22 20:00~20:10 进度情况 组员 当前进度 今日任务 李健 1. UI优化已经完成,顺带修复了一点小bug.issue 1. 文本导入.保存部 ...

  8. PM技术分享——《构建之法》初步实践

    软件理论 软件=程序+软件工程:软件开发活动(构建管理.源代码管理.软件设计.软件测试.项目管理)相关的内容的完成,才能完成把整个程序转化成为一个可用的软件的过程. 软件企业=软件+商业模式 软件开发 ...

  9. 【二食堂】Alpha - 事后分析

    事后分析 设想和目标 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? Alpha阶段要解决的问题是:根据用户标注的信息完成知识图谱的生成渲染.要解决的问题定义得比较 ...

  10. 2020BUAA软工热身作业

    2020BUAA软工热身作业 17373010 杜博玮 项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 热身作业 我在这个课程的目标是 学习软件工 ...