changeset 760:65b82a891cf7

Add epub format
author Dongsheng Song <dongsheng.song@gmail.com>
date Tue, 31 Mar 2009 11:04:18 +0800
parents f7add9f718a8
children bc9dc4f2f912
files Makefile po/zh.po stylesheets/hgbook.css
diffstat 3 files changed, 473 insertions(+), 632 deletions(-) [+]
line wrap: on
line diff
--- a/Makefile	Tue Mar 31 10:02:16 2009 +0800
+++ b/Makefile	Tue Mar 31 11:04:18 2009 +0800
@@ -3,18 +3,18 @@
 #
 include Makefile.vars
 
-FORMATS=html html-single pdf
+FORMATS=html html-single pdf epub
 
 PO_LANGUAGES := zh
 DBK_LANGUAGES := en
 LANGUAGES := $(DBK_LANGUAGES) $(PO_LANGUAGES)
 
 UPDATEPO = PERLLIB=$(PO4A_LIB) $(PO4A_HOME)/po4a-updatepo -M UTF-8 \
-	   -f docbook -o doctype='docbook' -o includeexternal \
-	   -o nodefault='<programlisting> <screen>' \
-	   -o untranslated='<programlisting> <screen>'
+	   -f docbook -o doctype=docbook -o includeexternal \
+	   -o nodefault="<programlisting> <screen>" \
+	   -o untranslated="<programlisting> <screen>"
 TRANSLATE = PERLLIB=$(PO4A_LIB) $(PO4A_HOME)/po4a-translate -M UTF-8 \
-	   -f docbook -o doctype='docbook' \
+	   -f docbook -o doctype=docbook \
 	   -k 0
 
 #rev_id = $(shell hg parents --template '{node|short} ({date|isodate})')
@@ -43,6 +43,7 @@
 	en/figs/wdir-pre-branch.png
 
 help:
+	@echo "  make epub         [LINGUA=en|zh|...]"
 	@echo "  make html         [LINGUA=en|zh|...]"
 	@echo "  make html-single  [LINGUA=en|zh|...]"
 	@echo "  make pdf          [LINGUA=en|zh|...]"
@@ -119,7 +120,11 @@
 else
 updatepo:
 ifneq "$(findstring $(LINGUA),$(PO_LANGUAGES))" ""
-	(cd po && $(UPDATEPO) -m ../en/00book.xml -p $(LINGUA).po)
+	(cd po; \
+	$(UPDATEPO) -m ../en/00book.xml -p $(LINGUA).po; \
+	cat $(LINGUA).po | sed 's/&emdash;/—/' > $(LINGUA).po.tmp; \
+	mv $(LINGUA).po.tmp $(LINGUA).po \
+	)
 	$(MAKE) tidypo LINGUA=$(LINGUA)
 endif
 endif
@@ -140,6 +145,7 @@
 build/$(LINGUA)/source/hgbook.xml: $(wildcard $(LINGUA)/*.xml) $(images) $(LINGUA)/examples/.run $(images)
 	mkdir -p build/$(LINGUA)/source/figs
 	cp $(LINGUA)/figs/*.png build/$(LINGUA)/source/figs
+	cp stylesheets/hgbook.css build/$(LINGUA)/source
 	(cd $(LINGUA); xmllint --nonet --noent --xinclude --postvalid --output ../$@.tmp 00book.xml)
 	cat $@.tmp | sed 's/\$$rev_id\$$/${rev_id}/' > $@
 else
@@ -152,6 +158,7 @@
 build/$(LINGUA)/source/hgbook.xml: build/en/source/hgbook.xml po/$(LINGUA).po $(images)
 	mkdir -p build/$(LINGUA)/source/figs
 	cp en/figs/*.png build/$(LINGUA)/source/figs
+	cp stylesheets/hgbook.css build/$(LINGUA)/source
 	$(TRANSLATE) -m build/en/source/hgbook.xml -p po/$(LINGUA).po -l $@.tmp
 	cat $@.tmp | sed 's/\$$rev_id\$$/${rev_id}/' > $@
 endif
@@ -159,6 +166,19 @@
 endif
 
 ifndef LINGUA
+epub:
+	for l in $(LANGUAGES); do \
+	    $(MAKE) $@ LINGUA=$$l; \
+	done
+else
+epub: build/$(LINGUA)/epub/hgbook.epub
+
+build/$(LINGUA)/epub/hgbook.epub: build/$(LINGUA)/source/hgbook.xml
+	mkdir -p build/$(LINGUA)/epub
+	(cd build/$(LINGUA)/source; $(DB2EPUB) -c hgbook.css -v hgbook.xml; mv hgbook.epub ../epub)
+endif
+
+ifndef LINGUA
 html:
 	for l in $(LANGUAGES); do \
 	    $(MAKE) $@ LINGUA=$$l; \
--- a/po/zh.po	Tue Mar 31 10:02:16 2009 +0800
+++ b/po/zh.po	Tue Mar 31 11:04:18 2009 +0800
@@ -41,7 +41,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: hgbook 1.2\n"
-"POT-Creation-Date: 2009-03-30 21:36+0800\n"
+"POT-Creation-Date: 2009-03-31 10:46+0800\n"
 "PO-Revision-Date: 2009-03-31 10:12+0800\n"
 "Last-Translator: \n"
 "Language-Team: Simplified Chinese <i18n-zh@googlegroups.com >\n"
@@ -436,9 +436,8 @@
 
 #. type: Content of: <book><appendix><sect1><sect2><title>
 #: ../en/appB-mq-ref.xml:14
-msgid ""
-"<command role=\"hg-ext-mq\">qapplied</command>&emdash;print applied patches"
-msgstr "<command role=\"hg-ext-mq\">qapplied</command>&emdash;显示已应用的补丁"
+msgid "<command role=\"hg-ext-mq\">qapplied</command>—print applied patches"
+msgstr "<command role=\"hg-ext-mq\">qapplied</command>—显示已应用的补丁"
 
 #. type: Content of: <book><appendix><sect1><sect2><para>
 #: ../en/appB-mq-ref.xml:17
@@ -451,9 +450,9 @@
 #. type: Content of: <book><appendix><sect1><sect2><title>
 #: ../en/appB-mq-ref.xml:24
 msgid ""
-"<command role=\"hg-ext-mq\">qcommit</command>&emdash;commit changes in the "
-"queue repository"
-msgstr "<command role=\"hg-ext-mq\">qcommit</command>&emdash;提交队列中的修改"
+"<command role=\"hg-ext-mq\">qcommit</command>—commit changes in the queue "
+"repository"
+msgstr "<command role=\"hg-ext-mq\">qcommit</command>—提交队列中的修改"
 
 #. type: Content of: <book><appendix><sect1><sect2><para>
 #: ../en/appB-mq-ref.xml:27
@@ -478,11 +477,11 @@
 #. type: Content of: <book><appendix><sect1><sect2><title>
 #: ../en/appB-mq-ref.xml:43
 msgid ""
-"<command role=\"hg-ext-mq\">qdelete</command>&emdash;delete a patch from the "
+"<command role=\"hg-ext-mq\">qdelete</command>—delete a patch from the "
 "<filename role=\"special\">series</filename> file"
 msgstr ""
-"<command role=\"hg-ext-mq\">qdelete</command>&emdash;从文件 <filename role="
-"\"special\">series</filename> 中删除补丁"
+"<command role=\"hg-ext-mq\">qdelete</command>—从文件 <filename role=\"special"
+"\">series</filename> 中删除补丁"
 
 #. type: Content of: <book><appendix><sect1><sect2><para>
 #: ../en/appB-mq-ref.xml:48
@@ -512,10 +511,9 @@
 #. type: Content of: <book><appendix><sect1><sect2><title>
 #: ../en/appB-mq-ref.xml:66
 msgid ""
-"<command role=\"hg-ext-mq\">qdiff</command>&emdash;print a diff of the "
-"topmost applied patch"
-msgstr ""
-"<command role=\"hg-ext-mq\">qdiff</command>&emdash;显示最新应用补丁的差异"
+"<command role=\"hg-ext-mq\">qdiff</command>—print a diff of the topmost "
+"applied patch"
+msgstr "<command role=\"hg-ext-mq\">qdiff</command>—显示最新应用补丁的差异"
 
 #. type: Content of: <book><appendix><sect1><sect2><para>
 #: ../en/appB-mq-ref.xml:69
@@ -528,11 +526,11 @@
 #. type: Content of: <book><appendix><sect1><sect2><title>
 #: ../en/appB-mq-ref.xml:75
 msgid ""
-"<command role=\"hg-ext-mq\">qfold</command>&emdash;merge (<quote>fold</"
-"quote>) several patches into one"
-msgstr ""
-"<command role=\"hg-ext-mq\">qfold</command>&emdash;将多个补丁合并(<quote>折叠"
-"</quote>)成一个"
+"<command role=\"hg-ext-mq\">qfold</command>—merge (<quote>fold</quote>) "
+"several patches into one"
+msgstr ""
+"<command role=\"hg-ext-mq\">qfold</command>—将多个补丁合并(<quote>折叠</"
+"quote>)成一个"
 
 #. type: Content of: <book><appendix><sect1><sect2><para>
 #: ../en/appB-mq-ref.xml:78
@@ -587,9 +585,9 @@
 #. type: Content of: <book><appendix><sect1><sect2><title>
 #: ../en/appB-mq-ref.xml:119
 msgid ""
-"<command role=\"hg-ext-mq\">qheader</command>&emdash;display the header/"
-"description of a patch"
-msgstr "<command role=\"hg-ext-mq\">qheader</command>&emdash;显示补丁头部描述"
+"<command role=\"hg-ext-mq\">qheader</command>—display the header/description "
+"of a patch"
+msgstr "<command role=\"hg-ext-mq\">qheader</command>—显示补丁头部描述"
 
 #. type: Content of: <book><appendix><sect1><sect2><para>
 #: ../en/appB-mq-ref.xml:123
@@ -602,10 +600,9 @@
 #. type: Content of: <book><appendix><sect1><sect2><title>
 #: ../en/appB-mq-ref.xml:130
 msgid ""
-"<command role=\"hg-ext-mq\">qimport</command>&emdash;import a third-party "
-"patch into the queue"
-msgstr ""
-"<command role=\"hg-ext-mq\">qimport</command>&emdash;将第三方补丁导入队列"
+"<command role=\"hg-ext-mq\">qimport</command>—import a third-party patch into "
+"the queue"
+msgstr "<command role=\"hg-ext-mq\">qimport</command>—将第三方补丁导入队列"
 
 #. type: Content of: <book><appendix><sect1><sect2><para>
 #: ../en/appB-mq-ref.xml:133
@@ -629,9 +626,9 @@
 #. type: Content of: <book><appendix><sect1><sect2><title>
 #: ../en/appB-mq-ref.xml:149
 msgid ""
-"<command role=\"hg-ext-mq\">qinit</command>&emdash;prepare a repository to "
-"work with MQ"
-msgstr "<command role=\"hg-ext-mq\">qinit</command>&emdash;为使用 MQ 配置版本库"
+"<command role=\"hg-ext-mq\">qinit</command>—prepare a repository to work with "
+"MQ"
+msgstr "<command role=\"hg-ext-mq\">qinit</command>—为使用 MQ 配置版本库"
 
 #. type: Content of: <book><appendix><sect1><sect2><para>
 #: ../en/appB-mq-ref.xml:152
@@ -661,8 +658,8 @@
 
 #. type: Content of: <book><appendix><sect1><sect2><title>
 #: ../en/appB-mq-ref.xml:178
-msgid "<command role=\"hg-ext-mq\">qnew</command>&emdash;create a new patch"
-msgstr "<command role=\"hg-ext-mq\">qnew</command>&emdash;创建新补丁"
+msgid "<command role=\"hg-ext-mq\">qnew</command>—create a new patch"
+msgstr "<command role=\"hg-ext-mq\">qnew</command>—创建新补丁"
 
 #. type: Content of: <book><appendix><sect1><sect2><para>
 #: ../en/appB-mq-ref.xml:181
@@ -704,9 +701,8 @@
 #. type: Content of: <book><appendix><sect1><sect2><title>
 #: ../en/appB-mq-ref.xml:215
 msgid ""
-"<command role=\"hg-ext-mq\">qnext</command>&emdash;print the name of the next "
-"patch"
-msgstr "<command role=\"hg-ext-mq\">qnext</command>&emdash;显示下个补丁的名称"
+"<command role=\"hg-ext-mq\">qnext</command>—print the name of the next patch"
+msgstr "<command role=\"hg-ext-mq\">qnext</command>—显示下个补丁的名称"
 
 #. type: Content of: <book><appendix><sect1><sect2><para>
 #: ../en/appB-mq-ref.xml:218
@@ -719,9 +715,8 @@
 
 #. type: Content of: <book><appendix><sect1><sect2><title>
 #: ../en/appB-mq-ref.xml:227
-msgid ""
-"<command role=\"hg-ext-mq\">qpop</command>&emdash;pop patches off the stack"
-msgstr "<command role=\"hg-ext-mq\">qpop</command>&emdash;删除堆栈顶部的补丁"
+msgid "<command role=\"hg-ext-mq\">qpop</command>—pop patches off the stack"
+msgstr "<command role=\"hg-ext-mq\">qpop</command>—删除堆栈顶部的补丁"
 
 #. type: Content of: <book><appendix><sect1><sect2><para>
 #: ../en/appB-mq-ref.xml:230
@@ -804,9 +799,9 @@
 #. type: Content of: <book><appendix><sect1><sect2><title>
 #: ../en/appB-mq-ref.xml:288
 msgid ""
-"<command role=\"hg-ext-mq\">qprev</command>&emdash;print the name of the "
-"previous patch"
-msgstr "<command role=\"hg-ext-mq\">qprev</command>&emdash;显示上个补丁的名称"
+"<command role=\"hg-ext-mq\">qprev</command>—print the name of the previous "
+"patch"
+msgstr "<command role=\"hg-ext-mq\">qprev</command>—显示上个补丁的名称"
 
 #. type: Content of: <book><appendix><sect1><sect2><para>
 #: ../en/appB-mq-ref.xml:291
@@ -819,9 +814,8 @@
 
 #. type: Content of: <book><appendix><sect1><sect2><title>
 #: ../en/appB-mq-ref.xml:300
-msgid ""
-"<command role=\"hg-ext-mq\">qpush</command>&emdash;push patches onto the stack"
-msgstr "<command role=\"hg-ext-mq\">qpush</command>&emdash;增加补丁到堆栈"
+msgid "<command role=\"hg-ext-mq\">qpush</command>—push patches onto the stack"
+msgstr "<command role=\"hg-ext-mq\">qpush</command>—增加补丁到堆栈"
 
 #. type: Content of: <book><appendix><sect1><sect2><para>
 #: ../en/appB-mq-ref.xml:303
@@ -918,9 +912,9 @@
 #. type: Content of: <book><appendix><sect1><sect2><title>
 #: ../en/appB-mq-ref.xml:368
 msgid ""
-"<command role=\"hg-ext-mq\">qrefresh</command>&emdash;update the topmost "
-"applied patch"
-msgstr "<command role=\"hg-ext-mq\">qrefresh</command>&emdash;更新最新的补丁"
+"<command role=\"hg-ext-mq\">qrefresh</command>—update the topmost applied "
+"patch"
+msgstr "<command role=\"hg-ext-mq\">qrefresh</command>—更新最新的补丁"
 
 #. type: Content of: <book><appendix><sect1><sect2><para>
 #: ../en/appB-mq-ref.xml:372
@@ -994,8 +988,8 @@
 
 #. type: Content of: <book><appendix><sect1><sect2><title>
 #: ../en/appB-mq-ref.xml:424
-msgid "<command role=\"hg-ext-mq\">qrename</command>&emdash;rename a patch"
-msgstr "<command role=\"hg-ext-mq\">qrename</command>&emdash;改名补丁"
+msgid "<command role=\"hg-ext-mq\">qrename</command>—rename a patch"
+msgstr "<command role=\"hg-ext-mq\">qrename</command>—改名补丁"
 
 #. type: Content of: <book><appendix><sect1><sect2><para>
 #: ../en/appB-mq-ref.xml:427
@@ -1015,10 +1009,8 @@
 
 #. type: Content of: <book><appendix><sect1><sect2><title>
 #: ../en/appB-mq-ref.xml:438
-msgid ""
-"<command role=\"hg-ext-mq\">qrestore</command>&emdash;restore saved queue "
-"state"
-msgstr "<command role=\"hg-ext-mq\">qrestore</command>&emdash;恢复保存的队列"
+msgid "<command role=\"hg-ext-mq\">qrestore</command>—restore saved queue state"
+msgstr "<command role=\"hg-ext-mq\">qrestore</command>—恢复保存的队列"
 
 #. type: Content of: <book><appendix><sect1><sect2><para>
 #: ../en/appB-mq-ref.xml:442
@@ -1027,9 +1019,8 @@
 
 #. type: Content of: <book><appendix><sect1><sect2><title>
 #: ../en/appB-mq-ref.xml:446
-msgid ""
-"<command role=\"hg-ext-mq\">qsave</command>&emdash;save current queue state"
-msgstr "<command role=\"hg-ext-mq\">qsave</command>&emdash;保存当前的队列状态"
+msgid "<command role=\"hg-ext-mq\">qsave</command>—save current queue state"
+msgstr "<command role=\"hg-ext-mq\">qsave</command>—保存当前的队列状态"
 
 #. type: Content of: <book><appendix><sect1><sect2><para>
 #: ../en/appB-mq-ref.xml:449
@@ -1039,9 +1030,8 @@
 #. type: Content of: <book><appendix><sect1><sect2><title>
 #: ../en/appB-mq-ref.xml:453
 msgid ""
-"<command role=\"hg-ext-mq\">qseries</command>&emdash;print the entire patch "
-"series"
-msgstr "<command role=\"hg-ext-mq\">qseries</command>&emdash;显示补丁序列"
+"<command role=\"hg-ext-mq\">qseries</command>—print the entire patch series"
+msgstr "<command role=\"hg-ext-mq\">qseries</command>—显示补丁序列"
 
 #. type: Content of: <book><appendix><sect1><sect2><para>
 #: ../en/appB-mq-ref.xml:456
@@ -1055,9 +1045,8 @@
 #. type: Content of: <book><appendix><sect1><sect2><title>
 #: ../en/appB-mq-ref.xml:464
 msgid ""
-"<command role=\"hg-ext-mq\">qtop</command>&emdash;print the name of the "
-"current patch"
-msgstr "<command role=\"hg-ext-mq\">qtop</command>&emdash;显示当前补丁的名称"
+"<command role=\"hg-ext-mq\">qtop</command>—print the name of the current patch"
+msgstr "<command role=\"hg-ext-mq\">qtop</command>—显示当前补丁的名称"
 
 #. type: Content of: <book><appendix><sect1><sect2><para>
 #: ../en/appB-mq-ref.xml:467
@@ -1069,10 +1058,8 @@
 #. type: Content of: <book><appendix><sect1><sect2><title>
 #: ../en/appB-mq-ref.xml:472
 msgid ""
-"<command role=\"hg-ext-mq\">qunapplied</command>&emdash;print patches not yet "
-"applied"
-msgstr ""
-"<command role=\"hg-ext-mq\">qunapplied</command>&emdash;显示尚未应用的补丁"
+"<command role=\"hg-ext-mq\">qunapplied</command>—print patches not yet applied"
+msgstr "<command role=\"hg-ext-mq\">qunapplied</command>—显示尚未应用的补丁"
 
 #. type: Content of: <book><appendix><sect1><sect2><para>
 #: ../en/appB-mq-ref.xml:476
@@ -1086,9 +1073,8 @@
 #. type: Content of: <book><appendix><sect1><sect2><title>
 #: ../en/appB-mq-ref.xml:484
 msgid ""
-"<command role=\"hg-cmd\">hg strip</command>&emdash;remove a revision and "
-"descendants"
-msgstr "<command role=\"hg-cmd\">hg strip</command>&emdash;删除一个版本及其后继"
+"<command role=\"hg-cmd\">hg strip</command>—remove a revision and descendants"
+msgstr "<command role=\"hg-cmd\">hg strip</command>—删除一个版本及其后继"
 
 #. type: Content of: <book><appendix><sect1><sect2><para>
 #: ../en/appB-mq-ref.xml:487
@@ -2531,8 +2517,8 @@
 
 #. type: Content of: <book><preface><sect1><title>
 #: ../en/ch00-preface.xml:739
-msgid "Colophon&emdash;this book is Free"
-msgstr "后记&emdash;本书是自由的!"
+msgid "Colophon—this book is Free"
+msgstr "后记—本书是自由的!"
 
 #. type: Content of: <book><preface><sect1><para>
 #: ../en/ch00-preface.xml:741
@@ -4863,9 +4849,9 @@
 #. type: Content of: <book><chapter><sect1><sect2><para>
 #: ../en/ch03-concepts.xml:498
 msgid ""
-"There are more details&emdash;merging has plenty of corner cases&emdash;but "
-"these are the most common choices that are involved in a merge.  As you can "
-"see, most cases are completely automatic, and indeed most merges finish "
+"There are more details—merging has plenty of corner cases&emdash;but these "
+"are the most common choices that are involved in a merge.  As you can see, "
+"most cases are completely automatic, and indeed most merges finish "
 "automatically, without requiring your input to resolve any conflicts."
 msgstr ""
 
@@ -5191,11 +5177,11 @@
 "you added before the commit will no longer be listed in the output of "
 "<command role=\"hg-cmd\">hg status</command>.  The reason for this is that "
 "<command role=\"hg-cmd\">hg status</command> only tells you about "
-"<quote>interesting</quote> files&emdash;those that you have modified or told "
-"Mercurial to do something with&emdash;by default.  If you have a repository "
-"that contains thousands of files, you will rarely want to know about files "
-"that Mercurial is tracking, but that have not changed.  (You can still get "
-"this information; we'll return to this later.)"
+"<quote>interesting</quote> files—those that you have modified or told "
+"Mercurial to do something with—by default.  If you have a repository that "
+"contains thousands of files, you will rarely want to know about files that "
+"Mercurial is tracking, but that have not changed.  (You can still get this "
+"information; we'll return to this later.)"
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><para>
@@ -5407,8 +5393,8 @@
 
 #. type: Content of: <book><chapter><sect1><sect2><title>
 #: ../en/ch04-daily.xml:198
-msgid "Useful shorthand&emdash;adding and removing files in one step"
-msgstr "有用的速记&emdash;一个步骤添加和删除文件"
+msgid "Useful shorthand—adding and removing files in one step"
+msgstr "有用的速记—一个步骤添加和删除文件"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
 #: ../en/ch04-daily.xml:201
@@ -5732,8 +5718,8 @@
 #. type: Content of: <book><chapter><sect1><sect2><para>
 #: ../en/ch04-daily.xml:454
 msgid ""
-"The case of diverging names occurs when two developers start with a "
-"file&emdash;let's call it <filename>foo</filename>&emdash;in their respective "
+"The case of diverging names occurs when two developers start with a file—"
+"let's call it <filename>foo</filename>&emdash;in their respective "
 "repositories."
 msgstr ""
 
@@ -8535,8 +8521,8 @@
 
 #. type: Content of: <book><chapter><sect1><title>
 #: ../en/ch07-branch.xml:228
-msgid "The flow of changes&emdash;big picture vs. little"
-msgstr "修改流程&emdash;宏观与微观"
+msgid "The flow of changes—big picture vs. little"
+msgstr "修改流程—宏观与微观"
 
 #. type: Content of: <book><chapter><sect1><para>
 #: ../en/ch07-branch.xml:230
@@ -8588,11 +8574,11 @@
 #: ../en/ch07-branch.xml:260
 msgid ""
 "The easiest way to isolate a <quote>big picture</quote> branch in Mercurial "
-"is in a dedicated repository.  If you have an existing shared "
-"repository&emdash;let's call it <literal>myproject</literal>&emdash;that "
-"reaches a <quote>1.0</quote> milestone, you can start to prepare for future "
-"maintenance releases on top of version 1.0 by tagging the revision from which "
-"you prepared the 1.0 release."
+"is in a dedicated repository.  If you have an existing shared repository—"
+"let's call it <literal>myproject</literal>&emdash;that reaches a <quote>1.0</"
+"quote> milestone, you can start to prepare for future maintenance releases on "
+"top of version 1.0 by tagging the revision from which you prepared the 1.0 "
+"release."
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><para>
@@ -9013,9 +8999,9 @@
 #. type: Content of: <book><chapter><sect1><sect2><para>
 #: ../en/ch08-undo.xml:65
 msgid ""
-"However, luck is with me&emdash;I've caught my error before I pushed the "
-"changeset.  I use the <command role=\"hg-cmd\">hg rollback</command> command, "
-"and Mercurial makes that last changeset vanish."
+"However, luck is with me—I've caught my error before I pushed the changeset.  "
+"I use the <command role=\"hg-cmd\">hg rollback</command> command, and "
+"Mercurial makes that last changeset vanish."
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
@@ -9085,12 +9071,12 @@
 #. type: Content of: <book><chapter><sect1><sect2><para>
 #: ../en/ch08-undo.xml:126
 msgid ""
-"If you've pushed a change to another repository&emdash;particularly if it's a "
-"shared repository&emdash;it has essentially <quote>escaped into the wild,</"
-"quote> and you'll have to recover from your mistake in a different way.  What "
-"will happen if you push a changeset somewhere, then roll it back, then pull "
-"from the repository you pushed to, is that the changeset will reappear in "
-"your repository."
+"If you've pushed a change to another repository—particularly if it's a shared "
+"repository—it has essentially <quote>escaped into the wild,</quote> and "
+"you'll have to recover from your mistake in a different way.  What will "
+"happen if you push a changeset somewhere, then roll it back, then pull from "
+"the repository you pushed to, is that the changeset will reappear in your "
+"repository."
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
@@ -9212,7 +9198,7 @@
 msgid ""
 "The <command role=\"hg-cmd\">hg revert</command> command is useful for more "
 "than just modified files.  It lets you reverse the results of all of "
-"Mercurial's file management commands&emdash;<command role=\"hg-cmd\">hg add</"
+"Mercurial's file management commands—<command role=\"hg-cmd\">hg add</"
 "command>, <command role=\"hg-cmd\">hg remove</command>, and so on."
 msgstr ""
 
@@ -9715,13 +9701,12 @@
 #. type: Content of: <book><chapter><sect1><para>
 #: ../en/ch08-undo.xml:616
 msgid ""
-"Since Mercurial treats history as accumulative&emdash;every change builds on "
-"top of all changes that preceded it&emdash;you generally can't just make "
-"disastrous changes disappear.  The one exception is when you've just "
-"committed a change, and it hasn't been pushed or pulled into another "
-"repository.  That's when you can safely use the <command role=\"hg-cmd\">hg "
-"rollback</command> command, as I detailed in <xref linkend=\"sec:undo:rollback"
-"\"/>."
+"Since Mercurial treats history as accumulative—every change builds on top of "
+"all changes that preceded it—you generally can't just make disastrous changes "
+"disappear.  The one exception is when you've just committed a change, and it "
+"hasn't been pushed or pulled into another repository.  That's when you can "
+"safely use the <command role=\"hg-cmd\">hg rollback</command> command, as I "
+"detailed in <xref linkend=\"sec:undo:rollback\"/>."
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><para>
@@ -10742,11 +10727,10 @@
 msgid ""
 "In practice, putting a centralised bottleneck like this in place is not often "
 "a good idea, and transaction visibility has nothing to do with the problem.  "
-"As the size of a project&emdash;and the time it takes to build and "
-"test&emdash;grows, you rapidly run into a wall with this <quote>try before "
-"you buy</quote> approach, where you have more changesets to test than time in "
-"which to deal with them.  The inevitable result is frustration on the part of "
-"all involved."
+"As the size of a project—and the time it takes to build and test—grows, you "
+"rapidly run into a wall with this <quote>try before you buy</quote> approach, "
+"where you have more changesets to test than time in which to deal with them.  "
+"The inevitable result is frustration on the part of all involved."
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
@@ -10906,9 +10890,8 @@
 #. type: Content of: <book><chapter><sect1><sect2><para>
 #: ../en/ch09-hook.xml:464
 msgid ""
-"You can write a hook either as a normal program&emdash;typically a shell "
-"script&emdash;or as a Python function that is executed within the Mercurial "
-"process."
+"You can write a hook either as a normal program—typically a shell script—or "
+"as a Python function that is executed within the Mercurial process."
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
@@ -11203,9 +11186,9 @@
 #. type: Content of: <book><chapter><sect1><sect2><title>
 #: ../en/ch09-hook.xml:716
 msgid ""
-"<literal role=\"hg-ext\">acl</literal>&emdash;access control for parts of a "
+"<literal role=\"hg-ext\">acl</literal>—access control for parts of a "
 "repository"
-msgstr "<literal role=\"hg-ext\">acl</literal>&emdash;版本库的访问控制"
+msgstr "<literal role=\"hg-ext\">acl</literal>—版本库的访问控制"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
 #: ../en/ch09-hook.xml:719
@@ -11350,9 +11333,8 @@
 
 #. type: Content of: <book><chapter><sect1><sect2><title>
 #: ../en/ch09-hook.xml:844
-msgid ""
-"<literal role=\"hg-ext\">bugzilla</literal>&emdash;integration with Bugzilla"
-msgstr "<literal role=\"hg-ext\">bugzilla</literal>&emdash;与 Bugzilla 的集成"
+msgid "<literal role=\"hg-ext\">bugzilla</literal>—integration with Bugzilla"
+msgstr "<literal role=\"hg-ext\">bugzilla</literal>—与 Bugzilla 的集成"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
 #: ../en/ch09-hook.xml:848
@@ -11367,7 +11349,7 @@
 #: ../en/ch09-hook.xml:855
 msgid ""
 "It adds a comment to the bug that looks like this (you can configure the "
-"contents of the comment&emdash;see below):"
+"contents of the comment—see below):"
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
@@ -11683,9 +11665,8 @@
 
 #. type: Content of: <book><chapter><sect1><sect2><title>
 #: ../en/ch09-hook.xml:1150
-msgid ""
-"<literal role=\"hg-ext\">notify</literal>&emdash;send email notifications"
-msgstr "<literal role=\"hg-ext\">notify</literal>&emdash;邮件通知"
+msgid "<literal role=\"hg-ext\">notify</literal>—send email notifications"
+msgstr "<literal role=\"hg-ext\">notify</literal>—邮件通知"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
 #: ../en/ch09-hook.xml:1153
@@ -12008,8 +11989,8 @@
 
 #. type: Content of: <book><chapter><sect1><sect2><sect3><title>
 #: ../en/ch09-hook.xml:1431
-msgid "Where changes are going&emdash;remote repository URLs"
-msgstr "修改集要到哪里&emdash;远程版本库的地址"
+msgid "Where changes are going—remote repository URLs"
+msgstr "修改集要到哪里—远程版本库的地址"
 
 #. type: Content of: <book><chapter><sect1><sect2><sect3><para>
 #: ../en/ch09-hook.xml:1434
@@ -12033,21 +12014,21 @@
 #. type: Content of: <book><chapter><sect1><sect2><sect3><itemizedlist><listitem><para>
 #: ../en/ch09-hook.xml:1449
 msgid ""
-"<literal>remote:ssh:1.2.3.4</literal>&emdash;remote ssh client, at the IP "
-"address <literal>1.2.3.4</literal>."
+"<literal>remote:ssh:1.2.3.4</literal>—remote ssh client, at the IP address "
+"<literal>1.2.3.4</literal>."
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><sect2><sect3><itemizedlist><listitem><para>
 #: ../en/ch09-hook.xml:1454
 msgid ""
-"<literal>remote:http:1.2.3.4</literal>&emdash;remote http client, at the IP "
-"address <literal>1.2.3.4</literal>.  If the client is using SSL, this will be "
-"of the form <literal>remote:https:1.2.3.4</literal>."
+"<literal>remote:http:1.2.3.4</literal>—remote http client, at the IP address "
+"<literal>1.2.3.4</literal>.  If the client is using SSL, this will be of the "
+"form <literal>remote:https:1.2.3.4</literal>."
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><sect2><sect3><itemizedlist><listitem><para>
 #: ../en/ch09-hook.xml:1461
-msgid "Empty&emdash;no information could be discovered about the remote client."
+msgid "Empty—no information could be discovered about the remote client."
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><title>
@@ -12058,9 +12039,8 @@
 #. type: Content of: <book><chapter><sect1><sect2><title>
 #: ../en/ch09-hook.xml:1473
 msgid ""
-"<literal role=\"hook\">changegroup</literal>&emdash;after remote changesets "
-"added"
-msgstr "<literal role=\"hook\">changegroup</literal>&emdash;增加远程修改集之后"
+"<literal role=\"hook\">changegroup</literal>—after remote changesets added"
+msgstr "<literal role=\"hook\">changegroup</literal>—增加远程修改集之后"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
 #: ../en/ch09-hook.xml:1476
@@ -12126,10 +12106,8 @@
 
 #. type: Content of: <book><chapter><sect1><sect2><title>
 #: ../en/ch09-hook.xml:1526
-msgid ""
-"<literal role=\"hook\">commit</literal>&emdash;after a new changeset is "
-"created"
-msgstr "<literal role=\"hook\">commit</literal>&emdash;创建新修改集之后"
+msgid "<literal role=\"hook\">commit</literal>—after a new changeset is created"
+msgstr "<literal role=\"hook\">commit</literal>—创建新修改集之后"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
 #: ../en/ch09-hook.xml:1529
@@ -12168,9 +12146,8 @@
 #. type: Content of: <book><chapter><sect1><sect2><title>
 #: ../en/ch09-hook.xml:1559
 msgid ""
-"<literal role=\"hook\">incoming</literal>&emdash;after one remote changeset "
-"is added"
-msgstr "<literal role=\"hook\">incoming</literal>&emdash;增加远程修改集之后"
+"<literal role=\"hook\">incoming</literal>—after one remote changeset is added"
+msgstr "<literal role=\"hook\">incoming</literal>—增加远程修改集之后"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
 #: ../en/ch09-hook.xml:1562
@@ -12209,9 +12186,8 @@
 #. type: Content of: <book><chapter><sect1><sect2><title>
 #: ../en/ch09-hook.xml:1605
 msgid ""
-"<literal role=\"hook\">outgoing</literal>&emdash;after changesets are "
-"propagated"
-msgstr "<literal role=\"hook\">outgoing</literal>&emdash;传播修改集之后"
+"<literal role=\"hook\">outgoing</literal>—after changesets are propagated"
+msgstr "<literal role=\"hook\">outgoing</literal>—传播修改集之后"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
 #: ../en/ch09-hook.xml:1608
@@ -12257,10 +12233,9 @@
 #. type: Content of: <book><chapter><sect1><sect2><title>
 #: ../en/ch09-hook.xml:1652
 msgid ""
-"<literal role=\"hook\">prechangegroup</literal>&emdash;before starting to add "
-"remote changesets"
-msgstr ""
-"<literal role=\"hook\">prechangegroup</literal>&emdash;增加远程修改集之前"
+"<literal role=\"hook\">prechangegroup</literal>—before starting to add remote "
+"changesets"
+msgstr "<literal role=\"hook\">prechangegroup</literal>—增加远程修改集之前"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
 #: ../en/ch09-hook.xml:1656
@@ -12298,9 +12273,9 @@
 #. type: Content of: <book><chapter><sect1><sect2><title>
 #: ../en/ch09-hook.xml:1698
 msgid ""
-"<literal role=\"hook\">precommit</literal>&emdash;before starting to commit a "
+"<literal role=\"hook\">precommit</literal>—before starting to commit a "
 "changeset"
-msgstr "<literal role=\"hook\">precommit</literal>&emdash;提交修改集之前"
+msgstr "<literal role=\"hook\">precommit</literal>—提交修改集之前"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
 #: ../en/ch09-hook.xml:1701
@@ -12350,9 +12325,9 @@
 #. type: Content of: <book><chapter><sect1><sect2><title>
 #: ../en/ch09-hook.xml:1738
 msgid ""
-"<literal role=\"hook\">preoutgoing</literal>&emdash;before starting to "
-"propagate changesets"
-msgstr "<literal role=\"hook\">preoutgoing</literal>&emdash;传播修改集之前"
+"<literal role=\"hook\">preoutgoing</literal>—before starting to propagate "
+"changesets"
+msgstr "<literal role=\"hook\">preoutgoing</literal>—传播修改集之前"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
 #: ../en/ch09-hook.xml:1741
@@ -12387,9 +12362,8 @@
 
 #. type: Content of: <book><chapter><sect1><sect2><title>
 #: ../en/ch09-hook.xml:1775
-msgid ""
-"<literal role=\"hook\">pretag</literal>&emdash;before tagging a changeset"
-msgstr "<literal role=\"hook\">pretag</literal>&emdash;创建标签之前"
+msgid "<literal role=\"hook\">pretag</literal>—before tagging a changeset"
+msgstr "<literal role=\"hook\">pretag</literal>—创建标签之前"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
 #: ../en/ch09-hook.xml:1778
@@ -12438,20 +12412,19 @@
 #. type: Content of: <book><chapter><sect1><sect2><title>
 #: ../en/ch09-hook.xml:1815
 msgid ""
-"<literal role=\"hook\">pretxnchangegroup</literal>&emdash;before completing "
-"addition of remote changesets"
-msgstr ""
-"<literal role=\"hook\">pretxnchangegroup</literal>&emdash;完成增加远程修改集之"
-"前"
+"<literal role=\"hook\">pretxnchangegroup</literal>—before completing addition "
+"of remote changesets"
+msgstr ""
+"<literal role=\"hook\">pretxnchangegroup</literal>—完成增加远程修改集之前"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
 #: ../en/ch09-hook.xml:1819
 msgid ""
-"This controlling hook is run before a transaction&emdash;that manages the "
-"addition of a group of new changesets from outside the repository&emdash;"
-"completes.  If the hook succeeds, the transaction completes, and all of the "
-"changesets become permanent within this repository.  If the hook fails, the "
-"transaction is rolled back, and the data for the changesets is erased."
+"This controlling hook is run before a transaction—that manages the addition "
+"of a group of new changesets from outside the repository—completes.  If the "
+"hook succeeds, the transaction completes, and all of the changesets become "
+"permanent within this repository.  If the hook fails, the transaction is "
+"rolled back, and the data for the changesets is erased."
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
@@ -12491,17 +12464,17 @@
 #. type: Content of: <book><chapter><sect1><sect2><title>
 #: ../en/ch09-hook.xml:1881
 msgid ""
-"<literal role=\"hook\">pretxncommit</literal>&emdash;before completing commit "
-"of new changeset"
-msgstr "<literal role=\"hook\">pretxncommit</literal>&emdash;完成提交之前"
+"<literal role=\"hook\">pretxncommit</literal>—before completing commit of new "
+"changeset"
+msgstr "<literal role=\"hook\">pretxncommit</literal>—完成提交之前"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
 #: ../en/ch09-hook.xml:1884
 msgid ""
-"This controlling hook is run before a transaction&emdash;that manages a new "
-"commit&emdash;completes.  If the hook succeeds, the transaction completes and "
-"the changeset becomes permanent within this repository.  If the hook fails, "
-"the transaction is rolled back, and the commit data is erased."
+"This controlling hook is run before a transaction—that manages a new commit—"
+"completes.  If the hook succeeds, the transaction completes and the changeset "
+"becomes permanent within this repository.  If the hook fails, the transaction "
+"is rolled back, and the commit data is erased."
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
@@ -12533,10 +12506,9 @@
 #. type: Content of: <book><chapter><sect1><sect2><title>
 #: ../en/ch09-hook.xml:1929
 msgid ""
-"<literal role=\"hook\">preupdate</literal>&emdash;before updating or merging "
-"working directory"
-msgstr ""
-"<literal role=\"hook\">preupdate</literal>&emdash;更新或合并工作目录之前"
+"<literal role=\"hook\">preupdate</literal>—before updating or merging working "
+"directory"
+msgstr "<literal role=\"hook\">preupdate</literal>—更新或合并工作目录之前"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
 #: ../en/ch09-hook.xml:1932
@@ -12572,8 +12544,8 @@
 
 #. type: Content of: <book><chapter><sect1><sect2><title>
 #: ../en/ch09-hook.xml:1961
-msgid "<literal role=\"hook\">tag</literal>&emdash;after tagging a changeset"
-msgstr "<literal role=\"hook\">tag</literal>&emdash;创建标签之后"
+msgid "<literal role=\"hook\">tag</literal>—after tagging a changeset"
+msgstr "<literal role=\"hook\">tag</literal>—创建标签之后"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
 #: ../en/ch09-hook.xml:1964
@@ -12621,9 +12593,9 @@
 #. type: Content of: <book><chapter><sect1><sect2><title>
 #: ../en/ch09-hook.xml:1998
 msgid ""
-"<literal role=\"hook\">update</literal>&emdash;after updating or merging "
-"working directory"
-msgstr "<literal role=\"hook\">update</literal>&emdash;更新或合并工作目录之后"
+"<literal role=\"hook\">update</literal>—after updating or merging working "
+"directory"
+msgstr "<literal role=\"hook\">update</literal>—更新或合并工作目录之后"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
 #: ../en/ch09-hook.xml:2001
@@ -12701,9 +12673,9 @@
 #. type: Content of: <book><chapter><sect1><para>
 #: ../en/ch10-template.xml:26
 msgid ""
-"This is somewhat informative, but it takes up a lot of space&emdash;five "
-"lines of output per changeset.  The <literal>compact</literal> style reduces "
-"this to three lines, presented in a sparse manner."
+"This is somewhat informative, but it takes up a lot of space—five lines of "
+"output per changeset.  The <literal>compact</literal> style reduces this to "
+"three lines, presented in a sparse manner."
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><para>
@@ -13774,9 +13746,8 @@
 #: ../en/ch11-mq.xml:149
 msgid ""
 "A major reason that patches have persisted in the free software and open "
-"source world&emdash;in spite of the availability of increasingly capable "
-"revision control tools over the years&emdash;is the <emphasis>agility</"
-"emphasis> they offer."
+"source world—in spite of the availability of increasingly capable revision "
+"control tools over the years—is the <emphasis>agility</emphasis> they offer."
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><para>
@@ -13785,8 +13756,8 @@
 "Traditional revision control tools make a permanent, irreversible record of "
 "everything that you do.  While this has great value, it's also somewhat "
 "stifling.  If you want to perform a wild-eyed experiment, you have to be "
-"careful in how you go about it, or you risk leaving unneeded&emdash;or worse, "
-"misleading or destabilising&emdash;traces of your missteps and errors in the "
+"careful in how you go about it, or you risk leaving unneeded—or worse, "
+"misleading or destabilising—traces of your missteps and errors in the "
 "permanent revision record."
 msgstr ""
 
@@ -13797,23 +13768,23 @@
 "it much easier to isolate your work.  Your patches live on top of normal "
 "revision history, and you can make them disappear or reappear at will.  If "
 "you don't like a patch, you can drop it.  If a patch isn't quite as you want "
-"it to be, simply fix it&emdash;as many times as you need to, until you have "
-"refined it into the form you desire."
+"it to be, simply fix it—as many times as you need to, until you have refined "
+"it into the form you desire."
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><para>
 #: ../en/ch11-mq.xml:171
 msgid ""
 "As an example, the integration of patches with revision control makes "
-"understanding patches and debugging their effects&emdash;and their interplay "
-"with the code they're based on&emdash;<emphasis>enormously</emphasis> easier. "
-"Since every applied patch has an associated changeset, you can give <command "
-"role=\"hg-cmd\">hg log</command> a file name to see which changesets and "
-"patches affected the file.  You can use the <command role=\"hg-cmd\">hg "
-"bisect</command> command to binary-search through all changesets and applied "
-"patches to see where a bug got introduced or fixed.  You can use the <command "
-"role=\"hg-cmd\">hg annotate</command> command to see which changeset or patch "
-"modified a particular line of a source file.  And so on."
+"understanding patches and debugging their effects—and their interplay with "
+"the code they're based on—<emphasis>enormously</emphasis> easier. Since every "
+"applied patch has an associated changeset, you can give <command role=\"hg-cmd"
+"\">hg log</command> a file name to see which changesets and patches affected "
+"the file.  You can use the <command role=\"hg-cmd\">hg bisect</command> "
+"command to binary-search through all changesets and applied patches to see "
+"where a bug got introduced or fixed.  You can use the <command role=\"hg-cmd"
+"\">hg annotate</command> command to see which changeset or patch modified a "
+"particular line of a source file.  And so on."
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><title>
@@ -14190,15 +14161,14 @@
 msgid ""
 "Here's an example that illustrates how you can use this ability. Let's say "
 "you're developing a new feature as two patches.  The first is a change to the "
-"core of your software, and the second&emdash;layered on top of the "
-"first&emdash;changes the user interface to use the code you just added to the "
-"core.  If you notice a bug in the core while you're working on the UI patch, "
-"it's easy to fix the core.  Simply <command role=\"hg-ext-mq\">qrefresh</"
-"command> the UI patch to save your in-progress changes, and <command role="
-"\"hg-ext-mq\">qpop</command> down to the core patch.  Fix the core bug, "
-"<command role=\"hg-ext-mq\">qrefresh</command> the core patch, and <command "
-"role=\"hg-ext-mq\">qpush</command> back to the UI patch to continue where you "
-"left off."
+"core of your software, and the second—layered on top of the first—changes the "
+"user interface to use the code you just added to the core.  If you notice a "
+"bug in the core while you're working on the UI patch, it's easy to fix the "
+"core.  Simply <command role=\"hg-ext-mq\">qrefresh</command> the UI patch to "
+"save your in-progress changes, and <command role=\"hg-ext-mq\">qpop</command> "
+"down to the core patch.  Fix the core bug, <command role=\"hg-ext-mq"
+"\">qrefresh</command> the core patch, and <command role=\"hg-ext-mq\">qpush</"
+"command> back to the UI patch to continue where you left off."
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><title>
@@ -14501,8 +14471,8 @@
 #. type: Content of: <book><chapter><sect1><sect2><itemizedlist><listitem><para>
 #: ../en/ch11-mq.xml:731
 msgid ""
-"A large hunk might apply better&emdash;either entirely or in part&emdash;if "
-"it was broken up into smaller hunks."
+"A large hunk might apply better—either entirely or in part&emdash;if it was "
+"broken up into smaller hunks."
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><sect2><itemizedlist><listitem><para>
@@ -15001,12 +14971,12 @@
 msgid ""
 "The <command>diffstat</command> command <citation>web:diffstat</citation> "
 "generates a histogram of the modifications made to each file in a patch.  It "
-"provides a good way to <quote>get a sense of</quote> a patch&emdash;which "
-"files it affects, and how much change it introduces to each file and as a "
-"whole.  (I find that it's a good idea to use <command>diffstat</command>'s "
-"<option role=\"cmd-opt-diffstat\">-p</option> option as a matter of course, "
-"as otherwise it will try to do clever things with prefixes of file names that "
-"inevitably confuse at least me.)"
+"provides a good way to <quote>get a sense of</quote> a patch—which files it "
+"affects, and how much change it introduces to each file and as a whole.  (I "
+"find that it's a good idea to use <command>diffstat</command>'s <option role="
+"\"cmd-opt-diffstat\">-p</option> option as a matter of course, as otherwise "
+"it will try to do clever things with prefixes of file names that inevitably "
+"confuse at least me.)"
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><para>
@@ -15056,13 +15026,12 @@
 #: ../en/ch11-mq.xml:1160
 msgid ""
 "Be aware of what patch you're working on.  Use the <command role=\"hg-ext-mq"
-"\">qtop</command> command and skim over the text of your patches "
-"frequently&emdash;for example, using <command role=\"hg-cmd\">hg tip <option "
-"role=\"hg-opt-tip\">-p</option></command>)&emdash;to be sure of where you "
-"stand.  I have several times worked on and <command role=\"hg-ext-mq"
-"\">qrefresh</command>ed a patch other than the one I intended, and it's often "
-"tricky to migrate changes into the right patch after making them in the wrong "
-"one."
+"\">qtop</command> command and skim over the text of your patches frequently—"
+"for example, using <command role=\"hg-cmd\">hg tip <option role=\"hg-opt-tip"
+"\">-p</option></command>)—to be sure of where you stand.  I have several "
+"times worked on and <command role=\"hg-ext-mq\">qrefresh</command>ed a patch "
+"other than the one I intended, and it's often tricky to migrate changes into "
+"the right patch after making them in the wrong one."
 msgstr ""
 
 #. type: Content of: <book><chapter><sect1><para>
--- a/stylesheets/hgbook.css	Tue Mar 31 10:02:16 2009 +0800
+++ b/stylesheets/hgbook.css	Tue Mar 31 11:04:18 2009 +0800
@@ -1,441 +1,293 @@
-body {
-  font: 12px/1.5 Verdana, sans-serif;
-  padding-top: 50px;
-  padding-left: 80px;
-  padding-right: 80px;
-  padding-bottom: 90px;
-}
-.ptmr7t- {
-  font-family: monospace;
+body
+{
+    background: white;
+    margin: 1in;
+    font-family: Georgia,SimSun,serif;
 }
-.ptmr7t-x-x-172 {
-  font-size: 172%;
-  font-family: monospace;
-}
-.ptmr7t-x-x-120 {
-  font-size: 120%;
-}
-.zpzccmry-x-x-120 {
-  font-size: 120%;
-  font-weight: bold;
-  font-style: italic;
-}
-.zpzccmry-x-x-120 {
-  font-weight: bold;
-  font-style: italic;
+
+p, li, ul, ol, dd, dt
+{
+    font-style: normal;
+    font-weight: normal;
+    color: black;
 }
-.pcrr7tn- {
-  font-family: monospace;
-}
-.ptmri7t- {
-  font-style: italic;
-}
-.ptmr7t-x-x-50 {
-  font-size: 50%;
-  font-family: monospace;
-}
-.ptmb7t- {
-  font-weight: bold;
+
+tt, pre
+{
+    font-family: Consolas,KaiTi,FangSong,SimSun,monospace;
 }
-.zptmcmr- {
-  font-style: italic;
-}
-.zptmcmrm- {
-  font-style: italic;
-}
-.zpzccmry- {
-  font-weight: bold;
-  font-style: italic;
-}
-.pcrb7t- {
-  font-family: monospace;
-  font-weight: bold;
+
+a
+{
+    color: blue;
+    text-decoration: underline;
+}    
+
+a:hover 
+{
+    background: rgb(75%,75%,100%);
+    color: blue;
+    text-decoration: underline;
 }
-.pcrro7t- {
-  font-family: monospace;
-  font-style: oblique;
-}
-p.noindent {
-  text-indent: 0em;
-  margin: 0em;
-}
-p.nopar {
-  text-indent: 0em;
+
+a:visited 
+{
+    color: purple;
+    text-decoration: underline;
 }
-p.indent {
-  text-indent: 1.5em;
-  margin: 0em;
-}
-a img {
-  border-top: 0;
-  border-left: 0;
-  border-right: 0;
-}
-center {
-  margin-top: 1em;
-  margin-bottom: 1em;
-}
-td center {
-  margin-top: 0em;
-  margin-bottom: 0em;
+
+img
+{
+    border: none;
 }
-.Canvas {
-  position: relative;
-}
-img.math {
-  vertical-align: middle;
-}
-li p.indent {
-  text-indent: 0em;
-}
-.enumerate1 {
-  list-style-type: decimal;
+
+h1.title
+{
+    font-size: 250%;
+    font-style: normal;
+    font-weight: bold;
+    color: black;
 }
-.enumerate2 {
-  list-style-type: lower-alpha;
-}
-.enumerate3 {
-  list-style-type: lower-roman;
+
+h2.subtitle
+{
+    font-size: 150%;
+    font-style: italic;
+    color: black;
 }
-.enumerate4 {
-  list-style-type: upper-alpha;
-}
-div.newtheorem {
-  margin-bottom: 2em;
-  margin-top: 2em;
-}
-.obeylines-h,.obeylines-v {
-  white-space: nowrap;
+
+h2.title
+{
+    font-size: 150%;
+    font-style: normal;
+    font-weight: bold;
+    color: black;
 }
-div.obeylines-v p {
-  margin-top: 0;
-  margin-bottom: 0;
-}
-.overline {
-  text-decoration: overline;
-}
-.overline img {
-  border-top: 1px solid black;
+
+h3.title
+{
+    font-size: 125%;
+    font-style: normal;
+    font-weight: bold;
+    color: black;
 }
-td.displaylines {
-  text-align: center;
-  white-space: nowrap;
-}
-.centerline {
-  text-align: center;
-}
-.rightline {
-  text-align: right;
-}
-div.verbatim {
-  font-family: monospace;
-  white-space: nowrap;
-}
-table.verbatim {
-  width: 100%;
+
+h4.title
+{
+    font-size: 100%;
+    font-style: normal;
+    font-weight: bold;
+    color: black;
 }
-.fbox {
-  background: url(note.png) no-repeat #cec;
-  padding-left: 65px;
-  padding-top: 1em;
-  padding-bottom: 1em;
-  padding-right: 1em;
-  text-indent: 0pt;
-  border: dotted black 1px;
+
+strong
+{
+    font-weight: normal;
 }
-div.center div.fbox {
-  text-align: center;
-  clear: both;
-  padding-left: 3.0pt;
-  padding-right: 3.0pt;
-  text-indent: 0pt;
-  border: solid black 0.4pt;
+
+.toc b
+{
+    font-family: Verdana,SimHei,sans-serif;
+    font-size: 120%;
+    font-style: normal;
+    font-weight: bold;
+    color: black;
 }
-table.minipage {
-  width: 100%;
-}
-div.center, div.center div.center {
-  text-align: center;
-  margin-left: 1em;
-  margin-right: 1em;
-}
-div.center div {
-  text-align: left;
+
+.title
+{
+    font-family: Verdana,SimHei,sans-serif;
 }
-div.flushright, div.flushright div.flushright {
-  text-align: right;
-}
-div.flushright div {
-  text-align: left;
-}
-div.flushleft {
-  text-align: left;
-}
-.underline {
-  text-decoration: underline;
+
+.screen, .programlisting, .structname
+{
+    font-family: Consolas,KaiTi,FangSong,SimSun,monospace;
+    font-style: normal;
+    font-weight: normal;
 }
-.underline img {
-  border-bottom: 1px solid black;
-  margin-bottom: 1pt;
+
+.userinput
+{
+    font-weight: normal;
 }
-.framebox-c, .framebox-l, .framebox-r {
-  padding-left: 3.0pt;
-  padding-right: 3.0pt;
-  text-indent: 0pt;
-  border: solid black 0.4pt;
-}
-.framebox-c {
-  text-align: center;
-}
-.framebox-l {
-  text-align: left;
+
+.command
+{
+    font-style: italic;
 }
-.framebox-r {
-  text-align: right;
-}
-span.thank-mark {
-  vertical-align: super
+
+.filename
+{
+    font-family: Georgia,SimSun,serif;
+    font-style: italic;
 }
-span.footnote-mark sup.textsuperscript, span.footnote-mark a sup.textsuperscript {
-  font-size: 80%;
-}
-div.tabular, div.center div.tabular {
-  text-align: center;
-  margin-top: 0.5em;
-  margin-bottom: 0.5em;
+
+.figure, .example, .table
+{
+    margin: 0.125in 0.25in;
 }
-table.tabular td p {
-  margin-top: 0em;
-}
-table.tabular {
-  margin-left: auto;
-  margin-right: auto;
+
+.figure p.title b, .example p.title b, .table p.title b
+{
+    font-family: Georgia,SimSun,serif;
+    font-size: 80%;
+    font-style: italic;
+    font-weight: normal;
 }
-div.td00 {
-  margin-left: 0pt;
-  margin-right: 0pt;
-}
-div.td01 {
-  margin-left: 0pt;
-  margin-right: 5pt;
+
+.table table
+{
+    border-width: 1px;
+    border-style: solid;
+    border-color: black;
+    border-spacing: 0;
+    background: rgb(240,240,240);
 }
-div.td10 {
-  margin-left: 5pt;
-  margin-right: 0pt;
-}
-div.td11 {
-  margin-left: 5pt;
-  margin-right: 5pt;
-}
-table[rules] {
-  border-left: solid black 0.4pt;
-  border-right: solid black 0.4pt;
-}
-td.td00 {
-  padding-left: 0pt;
-  padding-right: 0pt;
-}
-td.td01 {
-  padding-left: 0pt;
-  padding-right: 5pt;
-}
-td.td10 {
-  padding-left: 5pt;
-  padding-right: 0pt;
+
+.table td
+{
+    border: none;
+    border-right: 1px black solid;
+    border-bottom: 1px black solid;
+    padding: 2px;
 }
-td.td11 {
-  padding-left: 5pt;
-  padding-right: 5pt;
-}
-table[rules] {
-  border-left: solid black 0.4pt;
-  border-right: solid black 0.4pt;
-}
-.hline hr, .cline hr {
-  height : 1px;
-  margin: 0px;
-}
-.tabbing-right {
-  text-align: right;
+
+.table th
+{
+    background: rgb(180,180,180);
+    border: none;
+    border-right: 1px black solid;
+    border-bottom: 1px black solid;
+    padding: 2px;
 }
-span.TEX {
-  letter-spacing: -0.125em;
-}
-span.TEX span.E {
-  position: relative;top: 0.5ex;left: -0.0417em;
+
+.table p.title, .figure p.title, .example p.title
+{
+    text-align: left !important;
+    font-size: 100% !important;
 }
-a span.TEX span.E {
-  text-decoration: none;
-}
-span.LATEX span.A {
-  position: relative;
-  top: -0.5ex;
-  left: -0.4em;
-  font-size: 85%;
+
+.author, .pubdate
+{
+    margin: 0;
+    font-size: 100%;
+    font-style: italic;
+    font-weight: normal;
+    color: black;
 }
-span.LATEX span.TEX {
-  position: relative;
-  left: -0.4em;
-}
-div.float img, div.float .caption {
-  text-align: center;
-}
-div.figure img, div.figure .caption {
-  text-align: center;
+
+.preface div.author, .preface .pubdate
+{
+    font-size: 80%;
 }
-.marginpar {
-  width: 20%;
-  float: right;
-  text-align: left;
-  margin-left: auto;
-  margin-top: 0.5em;
-  font-size: 85%;
-  text-decoration: underline;
-}
-.marginpar p {
-  margin-top: 0.4em;
-  margin-bottom: 0.4em;
-}
-table.equation {
-  width: 100%;
+
+.sidebar 
+{
+    border-top: dotted 1px black;
+    border-left: dotted 1px black;
+    border-right: solid 2px black;
+    border-bottom: solid 2px black;
+    background: rgb(240,220,170);
+    padding: 0 0.12in;
+    margin: 0.25in;
 }
-.equation td {
-  text-align: center;
-}
-td.equation {
-  margin-top: 1em;
-  margin-bottom: 1em;
-} 
-td.equation-label {
-  width: 5%;
-  text-align: center;
-}
-td.eqnarray4 {
-  width: 5%;
-  white-space: normal;
+
+.note .programlisting, .note .screen, 
+.tip .programlisting, .tip .screen, 
+.warning .programlisting, .warning .screen, 
+.sidebar .programlisting, .sidebar .screen
+{
+    border: none;
+    background: none;
 }
-td.eqnarray2 {
-  width: 5%;
-}
-table.eqnarray-star, table.eqnarray {
-  width: 100%;
+
+.sidebar p.title
+{
+    text-align: center;
+    font-size: 125%;
 }
-div.eqnarray {
-  text-align: center;
-}
-div.array {
-  text-align: center;
-}
-div.pmatrix {
-  text-align: center;
+
+.note, .tip, .warning
+{
+    border: black solid 1px;
+    margin: 0.125in 0;
+    padding: 0 55px;
+    font-size: 90%;
 }
-table.pmatrix {
-  width: 100%;
-}
-span.pmatrix img {
-  vertical-align: middle;
-}
-div.pmatrix {
-  text-align: center;
-}
-table.pmatrix {
-  width: 100%;
+
+.note
+{
+    background: url(./figs/note.png) no-repeat rgb(252,246,220);
 }
-img.cdots {
-  vertical-align: middle;
+
+.tip
+{
+    background: url(./figs/tip.png) no-repeat rgb(224,244,255);
 }
-.partToc a, .partToc, .likepartToc a, .likepartToc {
-  line-height: 200%;
-  font-weight: bold;
-  font-size: 110%;
-}
-.chapterToc a, .chapterToc, .likechapterToc a, .likechapterToc, .appendixToc a, .appendixToc {
-  line-height: 200%;
-  font-weight: bold;
+
+.warning
+{
+    background: url(./figs/warning.png) no-repeat rgb(255,210,210);
 }
-.caption td.id {
-  font-weight: bold;
-  white-space: nowrap;
-}
-table.caption {
-  text-align: center;
-}
-h1.partHead {
-  text-align: center;
+
+.note .title, .tip .title, .warning .title
+{
+    display: none;
 }
-p.bibitem {
-  text-indent: -2em;
-  margin-left: 2em;
-  margin-top: 0.6em;
-  margin-bottom: 0.6em;
+
+.programlisting, .screen
+{
+    font-size: 90%;
+    color: black;
+    margin: 1em 0.25in;
+    padding: 0.5em;
+    background: rgb(240,240,240);
+    border-top: black dotted 1px;
+    border-left: black dotted 1px;
+    border-right: black solid 2px;
+    border-bottom: black solid 2px;
 }
-p.bibitem-p {
-  text-indent: 0em;
-  margin-left: 2em;
-  margin-top: 0.6em;
-  margin-bottom: 0.6em;
-}
-.paragraphHead, .likeparagraphHead {
-  margin-top: 2em;
-  font-weight: bold;
-}
-.subparagraphHead, .likesubparagraphHead {
-  font-weight: bold;
+
+.navheader, .navfooter
+{
+    border: black solid 1px;
+    background: rgb(180,180,200);
 }
-.quote {
-  margin-bottom: 0.25em;
-  margin-top: 0.25em;
-  margin-left: 1em;
-  margin-right: 1em;
-  text-align: justify;
-}
-.verse {
-  white-space: nowrap;
-  margin-left: 2em}
-div.maketitle {
-  text-align: center;
+
+.navheader hr, .navfooter hr
+{
+    display: none;
 }
-h2.titleHead {
-  text-align: center;
-}
-div.maketitle {
-  margin-bottom: 2em;
+
+#svn-footer
+{
+    font-size: 80%;
+    text-align: center;
 }
-div.author, div.date {
-  text-align: center;
-}
-div.thanks {
-  text-align: left;
-  margin-left: 10%;
-  font-size: 85%;
-  font-style: italic;
+
+#svn-footer hr
+{
+    display: none;
 }
-div.author {
-  white-space: nowrap;
-}
-.quotation {
-  margin-bottom: 0.25em;
-  margin-top: 0.25em;
-  margin-left: 1em;
-}
-h1.partHead {
-  text-align: center;
-}
-img.graphics {
-  margin-left: 10%;
+
+/* --------------------- */
+/* PRINT MEDIA OVERRIDES */
+/* --------------------- */
+
+@media print
+{
+    body 
+    {
+        margin: 0;
+    }
+
+    .navheader, .navfooter
+    {
+        display: none;
+    }
+
+    #svn-footer hr
+    {
+        display: block;
+    }
 }
-.figure {
-  width: 100%;
-}
-P.fancyvrb {
-  white-space: nowrap;
-}
-hr {
-  border: 0;
-  height: 1px;
-}
-div#fancyvrb {
-  white-space: nowrap;
-  background: #eee;
-  padding: 1em;
-}