如何给 markdown 书稿添加索引 | How to make an index page for a book

in #cn6 years ago (edited)

缘由

《Steem 指南》编辑部今天收到一个建议,是 @vandadream 搜集来的,原文在这里,大意是,@wentong-syhhae 建议在书稿末尾增加一项索引(index),并且说,索引在中文书里不常见的,但是很有用。

啥是索引?就是这个:

简单来说,索引就是列出书里对读者比较重要的关键词,以及他们在书里出现的页码。

在网页格式的电子书里,索引其实没多大必要。想搜哪个关键词,ctrl + f 就行了。不过,在 pdf 和纸质书里还是很有帮助的。

那么,如何往 pdf 和纸质书里添加索引呢?难道要手动挨个找页码吗?

方法

不用愁,我们的书稿协作平台,从一开始就具备轻松添加索引的能力,因为我们选择的是 markdown!在幕后,pandoc 会将 markdown 格式转成 LaTeX 格式,然后编译成 pdf,而 LaTeX 是轻松支持索引的。

作为书稿的作者,如果想添加索引,很简单:

在需要索引的地方加入\index{条目名称}就行了。书后会自动添加索引条目,页码自动生成!

现在来书稿的pdf 文件里看,已经有索引了。

示例

举个栗子。《Steem 指南》第 15 章“Steem 十讲”里有这样的文字:

Steem 其实在 HF19 之前的设计其实是鼓励 users 在 SP 的存放上集中到单一 account 的,……

HF19 这个关键词比较重要。为了方便读者找到书里哪里出现了 HF19,可以这样添加索引:

Steem 其实在 HF19 \index{HF19} 之前的设计其实是鼓励 users 在 SP 的存放上集中到单一 account 的,……

条目名称 HF19 就是出现在书尾里的名称。我添加了三处。这样一来,编译得到的书后面就自动出现了索引页,显示了条目名称和出现的页码:

201802201.jpg

条目名称也可以写成别的:

Steem 其实在 HF19 \index{硬叉19} 之前的设计其实是鼓励 users 在 SP 的存放上集中到单一 account 的,……

这样,书末的索引页出现的关键词就成了“硬叉19”。

在多位作者的初稿编写阶段,不宜各自添加索引。你想啊,很多人都用到了 HF19 这个词,有的添加了索引,有的没添加;作者甲用的条目是\index{硬叉19},作者乙用的是\index{HF19},作者丙用的是\index{HF 19},最后就出现了三个不同的关键词,容易混乱。

添加索引这一步,我的建议是到统稿时完成。到时候,只需将全文的 HF19查找替换成HF19 \index{HF19}就行了。

进阶

上面讲的是简单索引。我们还可以添加多级索引。下面是我的《学 R ——零基础学习 R 语言》一书的索引:

201802202.jpg

添加方法也很简单,在需要插入索引的地方,用一个惊叹号把父子两级索引分隔即可。例如,上图里“作图”下面的abline 条目是这样生成的:

\index{作图!abline}

总结

  1. 往 markdown 书稿里添加索引,只需在相关位置加入\index{条目名称}就行了。多级索引则添加\index{父条目!子条目}
  2. 在多位作者的初稿编写阶段,不宜各自添加索引,容易带来混乱。添加索引这一步,我的建议是到统稿时完成。
Sort:  

这才明白了索引的用处。

就相当于ctrl + f。

在多位作者的初稿编写阶段,不宜各自添加索引,容易带来混乱。添加索引这一步,我的建议是到统稿时完成

支持这点,感觉应该等都定稿了,大家提出自己的关键字+页码,汇总到一人那里,统一做索引。虽说众人拾柴火焰高,但有时候线路多了反而乱了阵脚

不用管页码。页码是自动生成的。

good effort

技术小白看懂了一半,继续琢磨

这个不用懂……

这不就是英语课本最后的单词表嘛!

good luck with your good friends. hopefully my friends are successful

You are welcome my friend

@dapeng, 世界上有一种人叫作家,你就是其中之一!

Congratulations @dapeng! You have completed some achievement on Steemit and have been rewarded with new badge(s) :

Award for the number of posts published

Click on any badge to view your own Board of Honor on SteemitBoard.

To support your work, I also upvoted your post!
For more information about SteemitBoard, click here

If you no longer want to receive notifications, reply to this comment with the word STOP

Upvote this notification to help all Steemit users. Learn why here!

Coin Marketplace

STEEM 0.26
TRX 0.11
JST 0.032
BTC 63754.85
ETH 3055.95
USDT 1.00
SBD 3.85