1. 首页>动态要闻 > 信息

markdown教程怎么把程序排好

作者:刘原华
2020-05-05
信息

1. 怎么实现 markdown 加粗 排列,回车的时候自动排序

我的观点是:不可能替代。

其实只要认真的思考一下什么是排版,了解过一些印刷排版的资料,有过排版长文甚至书籍的经历,在LaTeX中遇到过一些难以解决的棘手问题,应该会对什么是排版有所感觉,就会知道LaTeX不能替代的地方在哪里。因为“排版”不等同于“结构标记”。

详细的说,仅仅从论文写作的角度来说,也就是说,只是把把想要写的内容用电脑敲出来,该画的图画出来,该计算的结果计算出来,从这个意义来讲,Markdown+R倒是可行,这其实也是每个作者希望的方式,其实也应该是开发者所追求的的目标——内容与格式的分离、计算结果直接输出至文档。但就现在的情况以及未来的趋势来看,我认为Markdown+R或者+其他的某种科学计算语言(比如SageTeX、SciPy)或者绘图程序(比如TeXGraph、Gnuplot)不能成为LaTeX的替代,因为他们做的事情是书写加上简单的标记。

另外需要提到的是,像这种把写作与计算相结合的尝试非常多,我觉得R在这里并不是关键,除了前面提到的几个例子,TeXmacs、ScientificWorkplace都支持直接在写作中计算、绘图等,MATLAB甚至直接在MSWord中边写文章边计算,而且用Mathematica直接书写效果也是差强人意。不过,他们还是无法替代LaTeX最为排版工具的地位(他们涉及的只是最简单的标记或者最基础层次的排版,无法对版面、文字等进行精细的设置、调整)。

其实,我们现在的目标格式都是PDF,说白了,那个LaTeX代码也是一个中间过程,我们希望的结果是:作者用简单的标记语言(比如Markdown)书写,再加上一些科学计算语言使得我们可以把计算的结果也直接得到,然后生成“排版”规范的科技文献的PDF。纵观现在各种实现方式,最后一步都是拿(La)TeX来完成的(当然要出去TeXmacs、Mahtematica和ScientificWorkplace),其实机器生成的(La)TeX代码也非常有有限,难道大家认为直接写的(La)TeX代码都不一定能排版好的文章,难道用这二手的机器生成的(La)TeX代码就完美的解决了?如果要排版,还是需要手工调整(La)TeX代码。

如果排版要求不高,自己看的话,工作量不是很大,还可以接受,毕竟(La)TeX的标记要稍稍7a64e78988e69d8331333361323037繁琐一些。但是如果是比较长的文章,对真正意义上的排版比较讲究的话,这个工作量就大了,甚至要比直接写LaTeX代码更加麻烦。

所以说有一定的使用价值,毕竟标记简单,但是局限性很大,不能替代LaTeX的地位。再来扯淡一些:我们来看看Markdown是什么:“Markdown”istwothings:(1)aplaintextformattingsyntax;and(2)asoftwaretool,writteninPerl,thatconvertstheplaintextformattingtoHTML.它的哲学是:TheoverridingdesigngoalforMarkdown'sformattingsyntaxistomakeitasreadableaspossible.TheideaisthataMarkdown-formatteddocumentshouldbepublishableas-is,asplaintext,withoutlookinglikeit'sbeenmarkedupwithtagsorformattinginstructions.这是原始的Markdown语法(标记)以及转换程序(markdown.pl)。

可以看出,他最初不是用来排版的,只是一些简单的格式化,并且希望能够只用纯文本就可以清晰的体现格式,让标记显得自然。后来Markdown由于它的这种简洁易用火了,但同时也发现了它在很多方面的不足,尽管可以直接书写html来实现的标记,但大家自然是不肯局限于此的,于是结合已有的org-mode、rst等等标记,又有了很多的拓展和变种。

比如MarkdownExtra,MultiMarkdown,Maruku,kramdown,PandocMarkdown,GithubMarkdown,StackexchangeMarkdown等等。他们在标记以及转换程序上都有做出了很多的修改,而且可以支持各种不同的输出格式。

我最喜欢的也是我认为最有前景的Pandoc,在Markdown的基础之上做出了非常多的扩展,包括跟LaTeX的结合、各表表格、参考文献、交叉引用、页眉页脚、图表标题都可以实现,但即使这样,作为论文排版这就够了吗?而且,在加入这这些复杂的东西之后,可以明显感觉到,原文本并不能很好的遵循最初的设想(aMarkdown-formatteddocumentshouldbepublishableas-is,asplaintext,withoutlookinglikeit'sbeenmarkedupwithtagsorformattinginstructions)了。只是又造了一个轮子而已,而且还造的功能不全。

一般大家仅仅认为TeX只是一种标记,加粗、倾斜、章节、插图、超链接等等,特别的,感觉它只是对数学公式的一个标记,于是就认为这些东西Markdown(加上扩展)都可以做到,这其实是对“排版”这个词的认识太有限。也正是这一点使大家认为Markdown就可以替代LaTeX了。

TeX作为一个排版程序大大家都不怎么关注,这确实也不是一般作者需要关注的东西,但是它确实在那里,有其难以撼动的的地位。实际上前面说了,如论如何,我们最终的排版是交给TeX来完成的,如果直接写的LaTeX代码都难以很好的完成,二手代码就更难了,一些机械化的东西可以由转换来实现(比如生成表格的代码),但是排版并不完全是机械性的劳动。

大家熟悉的网页的内容的排版工作,是由浏览器完成的,标记HTML+样式CSS+辅助的程序JS然后。

2. 怎样在 Markdown 中使程序代码带上行号

在图灵社区使用 Markdown 写文章时,如果在一段文字的每行开头加上四个空格,或者一个制表符(Tab),这段文字就会被视为程序代码。这样,就会自动识别所用的编程语言,进行代码染色,语法高亮显示。但是,如果这段程序很长的话,就有两个小问题:

每行的开头要加上空格或制表符,很麻烦。

如果要显示行号的话,就更麻烦了。

因此,我用 C# 语言写了小程序,建设一个 ASP.NET 4 网站来解决上述两个麻烦:

[+]查看原图

在这个网页中:

Line Count 复选框表示是否需要加上行号。

Prefix 中的的 Space 和 Tab 无线按钮让你选择每行开头是增加空格还是制表符。

Prefix Count 文本框让你输入缩进的层次。默认是缩进一层 。但是如果遇到在有序列表或无序列表中的程序代码,就需要缩进两层,甚至更多层了。

这个网站的总体结构如下所示:

网站的配置文件 Web.config 如下所示:

网站的 Web 页面文件 CodeFormat.aspx 如下所示:

Code Format

3. 怎样引导新手使用 Markdown

我觉得 Markdown 虽然很 Geek,但语法上还是很简单的,各种扩展语法也很好的丰富了 Markdown 的功能,而且现在 Markdown 的可视化编辑工具(客户端和 Web 端都有)有很多,比较方便入门学习和日常使用。

Markdown 的优势嘛,大概有以下几点:

1. 基于纯文本,只保留内容,很少保留额外的东西。源文件可读可编辑,任意文本编辑器均支持(word 之类的编辑工具虽然丰富了文档格式,但添加了许多格式化的数据,而且是私有格式,被限制在少数几款工具中使用);

2. 在纯文本的基础上,通过简单的标记语法(或者叫约定),即可通过程序转换成 HTML 等其他格式的文档;

3. 转换程序已经遍布前后端、各种平台、各种语言了;

4. 转换支持的格式,或间接支持的格式也有很多(HTML、word、PDF、epub 等);

5. 扩展语法丰富,能支持的功能被无限扩充(Github 的扩展就很不错: GitHub Flavored Markdown · GitHub Help );

6. 编辑工具丰富(可以参考我的 Learning-Markdown,以及其他回复中的举例);

7. 主流网站支持比较好(Github 等)。

用 Markdown 写文章,不会因为要注意语法而导致写作速度变慢,还会从它标准的格式中获得一些方便之处:

1. 所有人、所有工具都共享统一的语法,不会出现 docx、PDF 打不开等问题;

2. 几乎是任意工具都可以打开编辑(普通文本编辑器、Markdown 专用编辑器);

3. 产生的内容语法是一致的,方便阅读和再编辑,共享给他人也是。

4. 如何将Markdown文件转换成HTML

方法:

1、首先需要安装markdownPad软件,这是专门编辑和生成转换markdown文件为html或者pdf文件的软件。

2、然后把markdown文件用markdownPad软件打开。左边是源码右边是效果。

3、然后点击菜单栏的“文件”,之后是“导出”,再选择导出的格式,可以看到有html和pdf两项。

4、保存为html文件后,markdown文件可以直接用浏览器打开。

markdown教程怎么把程序排好

推荐阅读
  • 日照好玩的地方和吃海鲜应该去哪听说日

    日照好玩的地方:万平口:"旅游来日照,必到万平口",已成为各地游客的共识。刘家湾赶海园:以赶海系列活动为主,集旅游、休闲、度假、民俗、健身于一体的综合旅游园。竹洞天:位于山东省日照市城区西端的将帅沟毛竹…

    信息 2024-09-21
  • 什么是铸造

    铸造是指将室温中为液态,但不久后将要固态化的物质倒入特定形状的铸模待其凝固成形的加工方式。 被铸物质多半原为固态但加热至液态的金属(例:铜、铁、铝、锡、铅等),而铸模的材料可以是沙、金属甚至陶瓷。 因应…

    信息 2024-09-21
  • 变形金刚中博派和狂派各有哪些人物

    博派:擎天柱,铁皮,大黄蜂,爵士,棘齿。狂派:威震天,红蜘蛛,眩晕,吵闹,萨克,碎骨魔,路障,迷乱。…

    信息 2024-09-21
  • 一平方毫米的铜线能过多少安的电流

    1平方毫米的铜线在不同电流下通过的安培数不同。最大是18A:(1)60A以下,选1平方毫米的铜线安全载流量是6A;(2)60~100A,选1平方毫米的铜线,安全载流量是5A;(3)100A以上,选1平方毫米的铜线,安全载流量是2.5A 。…

    信息 2024-09-21
  • 中华人民共和国城乡规划法第四十条有规

    自2008年1月1日起施行的《中华人民共和国城乡规划法》第四十条:在城市、镇规划区内进行建筑物、构筑物、道路、管线和其他工程建设的,建设单位或者个人应当向城市、县人民政府城乡规划主管部门或者省、自治区、直辖…

    信息 2024-09-21