[+] 2016年4月14日 %简介 ;2016/4/13 7:58:27 #Markdown To CHM(LME)是什么? Markdown To CHM(LME),原名是`Lunar Markdown Editor`——这是个定制的 [Markdown](000-什么是-Markdown?.html) 编辑器。 LME 在实现过程中,扩展了标准 Markdown 语法,从而实现了一些特定的功能。 #LME 的主要特点 ##目录管理与创建 CHM 工程文件 LME 支持较为简单的目录管理功能,走的是集成开发环境(IDE)的路子——这是它与一般 Markdown 编辑器最大的区别。 > 普通 Markdown 编辑器虽然方便写单个文档,但一旦涉及本地文件之间的相互链接就变得十分繁琐。而 LME 则在文件间链接、跳转等方面做了不少工作。 ★ 要特别注意,尽可能不要在 LME 中删除某个文件或重命名某个文件——因为 LME 没有智能到跟踪所有引用(链接)的程度——这些操作通常会导致__对此文件的链接失效__! > 一般情况下,有重命名的需求时,我们应当尽可能使用文档的[文档标题](04-语法与编辑/02-定制语法/08-文档标题.html)来解决问题,而不是对文件本身重命名。 LME 可以根据当前工作区管理器中的层次结构来生成 CHM 工程文件——这样就可以调用微软公司的 Html Help Workshop 来编译(打包)成 CHM 格式的帮助文档了。 > 这个教程本身就是使用 Markdown To CHM(LME) 编写、生成 CHM 工程文件,然后用 Html Help Workshop 编译成了 CHM 帮助文档。 > Html Help Workshop 是微软公司的软件,用户可以到微软公司官方网站免费下载、安装和使用。用户可以到[微软公司官方网站下载](https://msdn.microsoft.com/en-us/library/windows/desktop/ms669985(v=vs.85).aspx)。 > > 微软公司官方__只提供了英文版__,但是用户可以在网上找到网友汉化的版本——只是要注意两个问题: > > * 小心修改过的软件可能被附带了流氓软件或病毒程序。 > > * 这些修改版本可能没有正确注册所需要的控件。 ###关于 Html Help Workshop 与 CHM { Html Help Workshop 是什么? Html Help Workshop 是微软公司的帮助文档制作软件。尽管已经很老(而且有 Bug),并且微软公司已放弃更新这个软件了,但它依然很实用。 CHM,是微软公司的帮助文件格式,通常使用 Html Help Workshop 制作而成。请参见《[CHM 是什么](010_制作chm应注意的问题.html#CHM-SMM)》。 } ##扩展的 Markdown 语法 LME 对 Markdown 语法进行了扩展。目的不外乎两种: + 提高 Markdown 的书写效率 + 增强标准 Markdown 的功能 ###格式化 Markdown 文档 为达到提高书写效率的目的,LME 支持部分[中文格式符](04-语法与编辑/02-定制语法/03-中文格式符.html),避免输入时切换输入法的麻烦。——在输入完毕后可以使用[Markdown 格式化](04-语法与编辑/05-Markdown-格式化.html)功能来统一同义格式符的书写形式。 因为对标准 Markdown 进行了扩展,同时添加了容错功能,所以用户可能写出一些非标准的 Markdown 文本。 举个最简单的例子,中文用户往往在输入“块引用”语法时必须在行首将输入法切换到英文状态输入`> `再切换回中文输入法——这十分繁琐。而在 LME 中你可以直接输入`》 `或者`》 `或者`〉 `(全角单右书名号)`〉 `,不但全角空格、半角空格可以随意,甚至直接忽略空格也是可以的! 但这样随意输入可能使得文档不太美观、整齐,且与标准 Markdown 语法不一致也不便交流,于是这时候就可以利用**格式化**功能来整理一下——它会尽可能使文档整齐划一。 关于此功能,请参见《[Markdown 文本格式化](04-语法与编辑/03-常规操作/05-Markdown-文本格式化.html)》。 > 是否格式化对编译的 Html 页面没有影响。 ###新增 Markdown 语法元素 有些功能很实用,但标准 Markdown 语法并不支持,于是很多 Markdown 编辑器都进行了扩展。LME 也进行了语法扩展,最典型的例子是[二维文字表](04-语法与编辑/02-定制语法/01-文字表.html)与[树型文字表](04-语法与编辑/02-定制语法/01-02-SXWZB.html)。 ####二维文字表与树型文字表 LME 中文字表是完全依靠**将字符按一定的规则排列成某种形式**而构成的。主要包括纵横交错的二维文字表和表示树型层级结构的树型文字表。 #####二维文字表 [二维文字表](04-语法与编辑/02-定制语法/01-文字表.html)并不适合用来制作大型、复杂的表格,但是对于一些小的、简单的表格则十分方便。 市面上的 Markdown 编辑器,有些只提供了文字表功能,但不能让文本状态下的二维文字表自动对齐;有些虽然支持二维文字表在 Markdown 文档中文本对齐,但对中文支持较差。 LME 提供了二维文字表的格式化功能,这样可以保证 LME 编辑出来的简单二维文字表在__编辑时__和__编译成 Html 后__都能实现行、列对齐。 > 但这有个前提:必须在编辑时使用__点阵等宽字体__(如宋体、新宋体等),而且在单元格中不能使用**加粗**效果——因为它会导致字符占据的空间发生变化,从而导致 LME 计算出来的空间宽度不再准确。 关于这方面的功能,请参见《[文字表](06-文字表/_06-文字表.html)》。 > 无论是 Markdown 文档本身还是其中的二维文字表,__是否格式化对编译结果都没有影响__。 #####分层缩进文本 有时候需要显示一些按层级组织缩进的文本,而依靠空格、Tab 符(制表符)又无法实现目的——因为四个空格(或一个 Tab 符)开头的行会被自动当成[代码块](04-语法与编辑/01-基本语法/06-代码块.html)。 [树型文字表](04-语法与编辑/02-定制语法/01-02-SXWZB.html)和[前导字符串](04-语法与编辑/03-常规操作/13-GYQDZFC.html)都可以用来书写按层级缩进的文本。 > 默认情况下的普通正文文本与代码块文本的高亮显示效果差异明显,不利于视觉效果的统一。 所以在 LME 中用两个办法来解决这个问题:①使用[树型文字表](04-语法与编辑/02-定制语法/01-02-SXWZB.html)来表示层级关系;②为避免与[代码块](04-语法与编辑/01-基本语法/06-代码块.html)在语法上的冲突,在每行开头加上[前导字符串](04-语法与编辑/03-常规操作/13-GYQDZFC.html),内置的前导字符串(即默认替换字符)是美元符号`$`。 这两种方式都能较好地实现迅速输入层级文本——LME 对输入过程进行了专门的优化。 ######树型文字表 树型文字表用一系列特殊字符模拟出层级间的连接线来标示各层级间的相互关系。例如: !秦朝的制度 !├政治 !│├中央 !││├皇帝制度 !││└三公九卿制度 !│└地方 !│ └郡县制 !├经济 !│└土地私有 !└文化 ! └文化专制主义 这些特殊字符是不需要手工输入的,只要第一行以惊叹号开头,回车之后第二行仍然会以惊叹号开头——这时候使用`Tab`键、`Shift+Tab`组合快捷键可以自动添加这些分层连接线。结尾的一行可以使用`Shift+BackSpace`来删除多余的连线符。 > 使用树型文字表的时候本来不支持加粗、倾斜等基本 Markdown 格式语法,但后来考虑到现实应用场景中的需求,还是决定取消这个限制。 ######前导字符串 [前导字符串](04-语法与编辑/03-常规操作/13-GYQDZFC.html)用于快速输入头部相似或相同的文本行。前导字符串可以由用户自己定义规则。凡符合规则开头的文本行,在编辑时按下回车键换行时,根据规则的类型,会自动使新行开头与上一行保持一致(或将上一行开头改为“替换字符+零到多个空格”的形式添加到新行的头部——空格的数量由上一行开头符合规则的字符的数量决定。 也就是说,前导字符串分为两种:“复制型”与“替换型”。 > 美元符号`$`是内置的[(替换型)前导字符串](04-语法与编辑/03-常规操作/13-GYQDZFC.html)。如果发现`$`符不起作用,请检查是否将`默认替换字符`更改掉了。这部分内容请参见《[关于前导字符串](04-语法与编辑/03-常规操作/13-GYQDZFC.html)》。要注意的是:用户可以自己指定其它字符作为`默认替换字符`——只要它不与现有的语法元素冲突即可。 ####六级标题的折叠、展开功能 Markdown 语法中的六级[标题](04-语法与编辑/01-基本语法/01-标题.html)会被对应转换成 Html 中的 <h1>-<h6> 这六级标题。 标准 Markdown 的语法中关于**标题**有两种书写方式。为了便于制作六级标题在编译后、编辑时的**折叠/展开**功能,LME 屏蔽了其中一种方式,规定只能使用**以 \# 符开头**这种方式。 具体情况请参见《[标题](04-语法与编辑/01-基本语法/01-标题.html)》。 > 无论是编译后的 Html 文档中还是正在编辑时都可以折叠。 > 但 Html 中的折叠功能是通过 JavaScript 实现的,浏览器必须支持且允许 JavaScript 才可以使用。 ####行内<code>块编译为填空 支持<Code>块显示为[填空](04-语法与编辑/06-制作填空题.html)。 > 这是为了教学使用,设置好选项再编译,生成的 Html 文件中有些填空在呈现后点击一下才会显示答案。 ####支持任务列表 虽然与专业的任务管理软件(例如我个人很喜欢的 ToDoList)没法子比,LME 仍然提供了简单的任务管理功能,用户可以在文档中定义一些标签和任务说明,且可以使用“查找任务”功能按指定的顺序查看这些任务的完成情况。 具体功能请参见《[任务列表](04-语法与编辑/02-定制语法/02-任务列表.html)》。 > 共四种状态,可以添加时间标记,可以按开始或最后时间标签来查看。 ####支持自定义折叠区与方块区域 有些时候我们需要向用户提供一些说明文本,这时候需要从视觉上进行一下区分。仅依靠[块引用](04-语法与编辑/01-基本语法/05-块引用.html)是不够的,于是又提供了[自定义折叠区](04-语法与编辑/02-定制语法/11-自定义折叠区.html)和[方块区域](04-语法与编辑/02-定制语法/15-FKQY.html)。——它们可以让一些内容与其它部分在视觉上区分开来。 > 注意:不要在自定义折叠区和方块区域内部再嵌套其它块级元素——这可能导致右边界“溢出”。 ####其它扩展语法 还有一些定制语法也可能比较重要,比如[文档标题](04-语法与编辑/02-定制语法/08-文档标题.html)、[注释](04-语法与编辑/02-定制语法/06-注释.html)、[按倍数放大显示文本](04-语法与编辑/02-定制语法/14-ABSFDXSWB.html)、[Step 标记](04-语法与编辑/02-定制语法/STEPBJ.html)等,参见《[定制语法](04-语法与编辑/02-定制语法/_02-定制语法.html)》。 ##为快速编辑而进行的优化 为提高文件编辑的效率,LME 在文本编辑、界面布局、文件管理、资源操作等方面都进行了优化。 ###文本编辑 除大量使用快捷键之外,还在主界面提供了一些快速入口来提高编辑的效率。 对于输入文本来说,在速度和准确率要求都很高的场合,使用键盘仍然是最好的选择。熟悉 Vim 或 Emacs 这类编辑器的用户通常会推崇“手不离键盘”的操作方式。 但对于 LME 这样用于__创作内容__的一个微型集成开发环境(IDE)来讲,速度并不是第一位的——因为创作内容时需要思考,思考需要时间。这与纯粹的文本输入是有区别的;而且,在整个工作过程中,某些操作使用的频率并没有高到必须记住快捷键的那种程度。这就使得“纯键盘化”的操作方式其实是不合时宜的——通常没有什么 IDE 会走这条路子。 因此,虽然我个人对 Vim 很是喜欢,但我在做 LME 时从未打算走那条路子。——LME 在这方面的原则很简单:__怎么方便怎么来,尽可能尊重大多数普通用户现有的操作习惯,不跟风__。 LEM 在主界面的不同位置提供了常用命令的入口(通常是些按钮),还提供了大量的快捷菜单,并且在编辑器中还提供了“快捷工具条”、“自动完成”等功能。 ##界面布局 LME 提供了不同的透视图,可以通过快捷键方便地切换。每种透视图都适用于一种使用场景。 > “透视图”这个概念是从 Eclipse 中借来的,在这里它是指主界面的布局。 具体的透视图说明请参见《[透视图切换框](012_lme主界面元素简介/btl/_btl.html#透视图切换框)》。 ##文件管理 为便于按确定的规则整理文件、目录间的关系,以便生成 CHM 工程文件,LME 没有直接嵌入 Windows Explorer(Windows 资源管理器),而是自己用树型框做了一个简单的工作区管理器来管理所需要的资源文件。 工作区管理器最重要的功能就是创建工作区中各文件、目录的层次结构,并为各文件间的链接提供接口。 请参见《[文件间链接](05-文件间链接/_05-文件间链接.html)》。 ##资源操作 对于单文档的 Markdown 编辑器来说,要在文档中插入对一个图像文件的链接字符串是件挺麻烦的事情: + 要先准备好图像 + 再将图像文件保存到某个位置 + 记住图像文件的路径 + 计算出文档和图像文件之间的相对路径 + 手工书写链接字符串 正是因为这个过程太繁琐,所以不少 Markdown 编辑器都在想办法解决这个问题。 > 大家可以试用一下 OsChina.net(开源中国)网站提供的在线 Markdown 编辑器。如果想插入一张界面截图到当前文档,用户只需要截取一块图像数据,然后在插入点位置按下`Ctrl+V`——此时这块图像数据会自动上传到服务器并保存为某个随机名称的文件,然后,还会自动生成对该图像文件的引用链接。 ★ 整个过程对用户来讲,仅仅只需要按一组快捷键而已!方便得很。 LME 强调图像文件的可重复引用,所以比起 OsChina.net 使用的在线 Markdown 编辑器要麻烦一点——用户可以用类似的方式操作,但中间必须输入图像文件的名称! ★ 这个名称将决定链接在编译为 Html 文件后显示什么文本。 ##允许用户定制 CSS 样式 在将 Markdown 编译为 Html 文件时,LME 本身提供的样式表可能不足以满足用户的特殊需求,此时如果用户对 Html/CSS 比较熟悉,完全可以[自定义(定制)样式表](09-ZDYCSS/_09-ZDYCSS.html)。 现在,用户不但可以[定制工作区样式](09-ZDYCSS/DZSYYGZQDYS.html),而且可以通过直接嵌入 Html 代码的方式定制[定制页面样式](09-ZDYCSS/ZDZYGYMDYS.html)、以及仅仅[定制元素样式](09-ZDYCSS/ZDZYMZYGYSDYS.html)。