CTeX-org / forum

A temporarily alternate forum of `bbs.ctex.org`
https://t.me/chinesetex
Apache License 2.0
211 stars 16 forks source link

中文版心设计的疑难与最佳实践? #47

Closed Ranqumn closed 4 years ago

Ranqumn commented 5 years ago

问题疑难

ctexbook 默认设置并没有实现正确密排;手动重设行长可以补救吗?

参考资料

样例

\documentclass[UTF8,zihao=5]{ctexbook} % 五号字
\usepackage{zhlipsum}
\begin{document}

\zhlipsum[3][name=zhufu]

\end{document}

issue-ctex-geometry-problem-1-before

此处尾行并未对齐。

分析与尝试补救

ctexbook 文档类保留 book 文档类的默认行距,其并非是正文字号的整数倍。

根据 layout 宏包给出的参数,它是 345pt。

此时如果以五号字体每行 33 个字,根据 layout 宏包给出的参数,它是 347pt。

这样来看差不多。

需要将行距强制设定成正文字号的整数倍。

\documentclass[UTF8,zihao=5]{ctexbook} % 五号字

% \zijianju 每个字的间距
\newlength{\zijianju}
\setlength{\zijianju}{10.5bp} % 五号字 10.5 bp

\setlength{\textwidth}{33\zijianju} % 每行 33 个字

\usepackage{zhlipsum}
\begin{document}

\zhlipsum[3][name=zhufu]

\end{document}

issue-ctex-geometry-problem-1-after

此处尾行对齐。

然而在这里并没有解决行数与行距的问题。

所以应该推倒重新设计符合中文的版心?

双面文档的习惯做法?

lshort-zh-cn 中 5.3.1 节有一句话:

对于书籍等双面文档,习惯上奇数页右边、偶数页左边留出较多的页边距,而书脊一侧的奇数页左边、偶数页右边页边距较少。

这个难道不是因为需要「边注」,所以在朝向书口的一侧比朝向书脊一侧的距离留得多吗?

所以,如果不需要「边注」,那么不应该把版心延伸到边注区域上吗?

Requirements for Chinese Text Layout 中文排版需求 中,并没有给出关于双面文档的说明。(W3C Editor's Draft 04 July 2019)

而说明了

  1. 将版心置于印刷版面的正中央,天地等高、左右等宽。
  2. 横排时指定天的留白量、直排时则指定地的留白量,左右等宽。
  3. 天地等高,指定装订线的留白量。
  4. 指定装订线的留白量,横排时指定天的留白量、直排时则指定地的留白量。

NOTE: 一般而言,版心多置于印刷版面的的正中央,后依照版心尺寸不同,向上下、左右调整。这种设计方式主要承袭自活字印刷,但在桌面排版中,则多以印刷版面计算与版心尺寸四方边界之差为之。

所以,在这里的意思是,双面文档是「后依照版心尺寸不同,向上下、左右调整」而定出的?

不需要「边注」的书籍(接上一问题)

一般社科文方面书籍通常没有「边注」(尤其是文学刊物),所以要把它所占的区域去掉。

那么是否应该把版心延伸到边注区域上呢?

以及如何实现?

如何自动拉出一个符合中文排版的文本框?如何自动设置正确的行长?

只能提供思路如下:

  1. 获取正文字号(设宽度为 $a$)
  2. \textwidth 设定为其整数倍(假设此处为 $k$ 倍)
  3. 只修改 $k$ 的值

$$ \mathrm{textwidth} = k \cdot a $$

那么应该如何实现?

zepinglee commented 5 years ago
  1. 首先版面(layout)的设计跟正文字号都是在模板设计这个层面上的,自动根据正文字号修改 layout 不太合理。
  2. 版面的设计用 geometry 宏包修改比较方便。
    \documentclass[UTF8,zihao=5]{ctexbook} % 五号字
    \usepackage{zhlipsum}
    \usepackage{geometry}
    \geometry{
    paper     = a4paper,
    textwidth = 33em,
    }
    \begin{document}
    \zhlipsum[3][name=zhufu]
    \end{document}
  3. 你说的“行距”应该是行长吧?
Ranqumn commented 5 years ago

回 3:呃,打错了,我改一下。


回 2:我一般也用 geometry。不过,这个样例为了剔除掉 geometry 本身的影响,所以单纯使用了 \setlength

如果是默认的 ctexbook 设置,奇数页版面是这样的

代码:

\documentclass[UTF8,zihao=5]{ctexbook} % 五号字
\usepackage{layout}
\begin{document}

\layout

\end{document}

issue-geometry-origin

如果载入 geometry 宏包,而不设置参数,它也会修改文档的版面设计

代码:

\documentclass[UTF8,zihao=5]{ctexbook} % 五号字
\usepackage{geometry}
\usepackage{layout}
\begin{document}

\layout

\end{document}

issue-geometry-default

如果再加入参数 a4paper

代码:

\documentclass[UTF8,zihao=5]{ctexbook} % 五号字
\usepackage[a4paper]{geometry}
\usepackage{layout}
\begin{document}

\layout

\end{document}

issue-geometry-a4paper

呃,它们全部都不一样。

甚至载入 geometry 后,边注区域全部超出纸张了。

所以,为了排除 geometry 神奇行为的干扰,在前面样例就用土法了。

这引出了一个问题:

geometry 的默认设置是怎么回事?

不过我 geometry 宏包手册没有仔细看过……


继续回 2:

我之前的样例上,使用了一个非常土的方法:先定了一个正文字号长度 \zijianju 为 10.5 bp。

因为,对于字号大小,在 CTeX 宏集手册中,5.1 节中的表 4,给出了一张表,而《中文排版需求》2.3.5 节也给出一张表:

字号 大小
CTeX 五号 10.5 bp
《中文排版需求》 (旧)五号 10.5 pt

而根据「GB/T 9851.2-2008《印刷技术术语 第二部分:印前术语》」中的规定:

2.31 全角 em

排字的度量单位,宽度等于所使用的文字的磅数(point),用作排版宽度水平方向的度量。

也就是说 $1\,\mathrm{em} = 1\,\mathrm{pt}$

然而,CTeX (根据宏集手册)默认使用的是以 bp 为单位的。

所以,使用了土的方法。

而在《中文排版需求》最新的草稿中(W3C Editor's Draft 04 July 2019)说明了

「号」由于当年金属活字各地厂家的规范不一而不尽相同,「号」也有英美、欧陆、DTP等多种制式,导致「号」与「点」的换算有不同方法。下表仅列出常见的一些换算数值,仅供参考,不作为规范性规定

这好像很混乱。

参考资料:Type is Beautiful | 全角半角碎碎念


回 1:呃,难道不是应该先定文档的正文字号、纸张大小再定行长、行距、行数等参数?也就是说,如果改变了正文字号,行长、行距、行数都要跟着修改,对吗?所以,这不能自动实现吗?只能自己全手动调整?


呃,请问,对于「不需要『边注』的书籍」是否有什么看法?

muzimuzhi commented 5 years ago

引用的那篇 TIB 文章,我对其中的观点持保留态度。更期待综合考虑「标点挤压」后,TIB 对「行长为字号的整数倍」的表述。

ctexbook 默认设置并没有实现正确密排

就我个人的理解,ctex 宏集的主要目标是 latex 标准文档类的汉化,和多种 latex 中文方案的兼容,其本身只是一个「排版框架」,既无法满足所有人的所有需求,也不求立下一个「latex 中文排版」的文档类标杆。(参考 texdoc ctex, 摘要和 sec. 1)

实现 TIB 文章中所介绍的「正确密排」是否是ctex 宏集的设计目标,也许需要问一问 ctex 的维护者。

这个难道不是因为需要「边注」,所以在朝向书口的一侧比朝向书脊一侧的距离留得多吗? 如果不需要「边注」,那么不应该把版心延伸到边注区域上吗?

我对反问句和疑问句的回应,都是「不一定」。

西文书籍的版面设计中外侧页边距比内侧更大,这在第一部铅活字印刷品古腾堡圣经(在线浏览)中就有体现。这种内外侧页边距的关系延续至今,可能是多种原因导致的,审美的、历史的、材料限制的(例如羊皮)。(可参考 The Elements of Typographic Style, chap. 8)边注并不是唯一的、最重要的原因。

中文因为横排历史较短,排版和版面设计的实践和理论研究都还不够多。我了解得也很不足。

如你所说,ctex 宏集中的文档类,沿用了 latex 标准文档类的页面设计。排版是个实践的事情,如果觉得「希望做成这样」,那么去做便可。

甚至载入 geometry 后,边注区域全部超出纸张了。 geometry 的默认设置是怎么回事?

也就是说 $1,\mathrm{em} = 1,\mathrm{pt}$ 然而,CTeX (根据宏集手册)默认使用的是以 bp 为单位的。 这好像很混乱。

stone-zeng commented 5 years ago

参考:

Ranqumn commented 5 years ago

非常感谢。看来还是要好好读一读宏包手册,再查查维基百科……

花了一天时间好好读了读宏包手册,还有各种资料。

@muzimuzhi 我好像没有在 The Elements of Typographic Style 中找到关于外侧内侧页边距的内容(或许我眼瞎了)

外侧页边距与内侧页边距

西文书籍的版面设计中外侧页边距比内侧更大

本人随手翻到以下没有边注的书籍(电子版、我认为应该与印刷成品一样的)

issue-layout-mmix issue-layout-popper issue-layout-gr issue-layout-weinberg issue-layout-handbookofmath issue-layout-peskin issue-layout-phychem issue-layout-mc issue-layout-crc-hb issue-layout-bio issue-layout-finneganswake issue-harrypotter issue-layout-hobbit issue-layout-hungergame

感觉它们很混乱,完全不知道规律。

有的是,书脊一侧到版心左侧的距离小于开口一侧到版心右侧的距离,还有的是等距的,还有的是反过来的。

这里面最奇怪的是,A First Course in General Relativity 这本书,奇数页与偶数页全部采用左侧距离比右边大,然而,它又区分了奇数页与偶数页的样式区别,页眉的标题是不一样的(图中没有显示出来)。geometry 宏包里面提供了 asymmetric 选项,也就说,这个风格,是有需求的?

The Elements of Typographic Style 8.4.2 中写到

The textblock itself, in this example, is symmetrical, but it is placed asymmetrically on the page. The lefthand page is a mirror image of the right, but no mirror image runs the other way. The two-page spread is symmetrical horizontally - the direction in which the pages turn, either backward or forward, as the reader consults the book - but it is asymmetrical vertically - the direction in which the page stays put while the reader's eye repeatedly works its way in one direction: down.

页面需要左右镜像对称。嗯,这两种风格看来不一样。

好吧,乱到不想理……

有关装订问题

在看了某乎上的回答(好吧,目前我没找到更加专业的资料)。决定使用铜版纸胶装。

所以,这个便涉及到版心设计。

请问,装订线的距离为多少最为合适?

这个距离是否与页数有关系?

出血线(Bleed)?

好像仅在设计方面的文章中看到过这个,这个并没有在排版方面的文章中出现。

版心的制作应该不需要考虑裁纸的误差问题,是吗?

有关裁剪线

如果是个人打印一个像样的书籍,是否需要考虑像

issue-layout-mmix

这样,将裁剪线(应该是裁剪线吧)定出?

这个时候,好像很多配置要重新设置过。

中文版心应该如何制作?

好吧,感觉看了《中文排版需求》以后,我依然不会设计版心……

然后,如上面写的,找了很多书看它的版心制作。

发现很混乱……

或者说,这本身并没有什么标准,而是,因为一些历史问题或是其他原因,渐渐有了一些基本的共识。有些地方也许是偶然原因,有些地方也许是随性的,最后也被固结为标准了。

嗯,感觉这么一说,就可以开始随缘了……

也许,就是,并没有一个特定严格的标准,不管怎么排,只要结果令人满意就可以?

也许可以得出这么一个结论:没有最佳实践,只有随缘排版。

好吧,看了,上面那些小说的版心,也许可以这样随缘排版:

\documentclass[UTF8,zihao=5]{ctexbook} % 五号字

\usepackage[b5paper,twoside,hcentering, % B5 纸张 双面 左右边距等距
bindingoffset=7mm, % 假设 7 mm 的装订线 实物测量 找不到资料
marginparwidth=0pt, % 暴力去除边注区域
marginparsep=0pt, % 暴力去除边注区域
textwidth=33em % 每行 33 个字
]{geometry}

issue-layout-design

最后感觉,呃,好的版心设计与差的设计差别到底体现在哪里?

以及找到的一些与实物有关可供参考(并非专业)的资料

与实物有关的资料,好像在 LaTeX 中提到的不多。

是否有什么 《中文排版需求》的 LaTeX 实践 之类的文章?或者,因为《中文排版需求》依然很有争议,所以,在确定之前,没法写?

最后

唉,自己比较严格排个书印出来,真麻烦。

中文版心制作估计是 LaTeX 学习曲线里面最陡的一个,没有之一。大概是因为没有什么这方面与 LaTeX 有关的资料……

Ranqumn commented 5 years ago

嗯?GitHub 的 Markdown 编辑器会把不属于代码的 \, 转义成 ,,这是什么特性?

测试:\,

Ranqumn commented 5 years ago

?呃,什么意思?

Liam0205 commented 5 years ago

@Ranqumn 回错了。

muzimuzhi commented 5 years ago

@Ranqumn 你的评论 https://github.com/CTeX-org/forum/issues/47#issuecomment-511402313 有「在一个问题下无限追问」的趋势。新的问题请在新的 issue 里提问和讨论,旧问题的讨论请限制在 issue 标题之内。

排版不存在「唯一的最佳实践」。[1]你举的英文书籍的版心分割例子,要与书籍的开本大小(和页面比例)、内容种类(教科书还是文学作品)、功能预期(日常阅读还是经典收藏)结合起来看。成书的厚度(受总页数和用纸影响)、装订方式(胶装、图书馆装订还是活页)也影响页边距的具体打小。除了历史和文化方面的影响,其他的考虑都是落脚在「是否合适」,设计者觉得是否合适,读者觉得是否合适。你(似乎)正在准备制作一本书籍,也许可以先列出你对该书各方面的预期特征,缩小应用场景,再做深入调查和尝试。

请暂时放下「边注是影响页边距的主要原因」这一预设,不要仅为了「寻找能支持自己观点的材料」而阅读。


我好像没有在 The Elements of Typographic Style 中找到关于外侧内侧页边距的内容

可以在 chap. 8 里的示例中,看到对 margin 的描述(以比例的形式)。我提到 The Elements of Typographic Style ,是为了说明在该书对版心设计的讨论中,几乎没有提到边注。以此佐证我的观点,「边注并不是(影响内外侧页边距的)唯一的、最重要的原因」。

Ranqumn commented 5 years ago

@muzimuzhi 谢谢。

呃,也许我改个标题更合适?「从版心设计到实物装订 - 个人非商业用途的实践」?

呃,你说的很有道理,只是我的问题是,我并不知道,这些微调之后的影响到底是如何的,或者说我并不知道一个好的版心与差的版心到底区别在哪里。也许这需要查文献或者实验?

这个排书,并没有商业用途,只是给同人圈爱好者们,一本(希望可以有)印刷品质的书籍,然后他们可以自己去打印收藏。


我理解你的观点。呃,是不是有点误解?前面举出很多书的版心,不是为了说明或者论证边注与内外侧页边距的关联有多大,而是希望剔除边注这个变量(毕竟变量越少越好,如果有影响的话),看看版心是怎样的(也因为我需要排一本没有边注的书)。

RuixiZhang42 commented 5 years ago

《中文排版需求》单纯用 XeTeX 引擎是不好全部实现的。中文版心除了行长需要是(正文)字号的整数倍之外(只考虑密排),版心高度(只考虑横排)也需要是行距的整数倍外加一个字号。也就是说,中文相比西文而言,更倾向于「网格」——一行一行、一个字一个字往固定的格子里套。西文排版的网格横线是基线,比汉字的底线一般要高。

LaTeX 标准文档类 article,版心顶部到正文第一句的基线是由一个参数 \topskip 决定的:它被 article 自动设置成 10pt(对应文档类选项 10pt,正文字号 10pt)、11pt(对应文档类选项 11pt,正文字号 10.95pt)、12pt(对应文档类选项 12pt,正文字号 12pt)。用 CTeX 文档类 ctexart 带选项 zihao=5 外加 Adobe 做的字体,你可能需要修改这个参数值为 9.24bp;用 zihao=-4,你可能要改成 10.56bp。

希望上面这个例子能够表达我想阐述的如下观点:最佳实践是自己动手写模板,日积月累,慢慢添加内容。 目前,最好的起点就是知道该用 geometry 把版心宽度设为 346.5bp(33 个五号字)。TeX 底层上百个参数,日后积累、慢慢调。像 \topskip 这个东西,我也是大约一个月前才知道有什么意义。

有能力读 The TeXbook 就读吧,里面讲的真的很详细,把 TeX 的每一个功能都讲到了。LaTeX 是个大坑,入坑需谨慎。

muzimuzhi commented 5 years ago

@Ranqumn

呃,也许我改个标题更合适?「从版心设计到实物装订 - 个人非商业用途的实践」?

不合适。我不支持通过修改标题、扩大话题来把离题讨论纳入话题。我依然建议,开新 issue 讲新事。

而是希望剔除边注这个变量(毕竟变量越少越好,如果有影响的话),看看版心是怎样的

确实剔除了边注的变量,但如我上条 https://github.com/CTeX-org/forum/issues/47#issuecomment-511542409 提到的,还有诸如页面大小、内容主题等变量没有剔除。所以需要你先确定自己书籍的设计目标,缩小讨论范围,才能给出有针对性的建议。依然,我建议在新 issue 里进行后续的、具体到你手上书籍的讨论。

了解惯例、说服自己并形成风格、在 latex 里实现,这是好几件事。刚开始,建议找一本现成的纸质书,尽量细致地模仿其内页设计。

Ranqumn commented 5 years ago

@RuixiZhang42 谢谢。

好像看你希望把英文的所有距离全部换成以中文字距大小,解决这个问题。(不知道我有没有理解错。)

用 CTeX 文档类 ctexart 带选项 zihao=5 外加 Adobe 做的字体,你可能需要修改这个参数值为 9.24bp;用 zihao=-4,你可能要改成 10.56bp。

呃,我可以问一下,这个数值具体是怎么来的吗?我感觉有点迷。

LaTeX 是个大坑,入坑需谨慎。

的确。深有同感。

学完 LaTeX 标记语言(标记语言层面感觉 LaTeX 还真不错,比 HTML 还要方便),感觉已经可以了嘛,然后就帮了帮忙,接了个义务排书的事情,然后就……只能发 issue 了……

接着折腾了《中文排版需求》和 The Elements of Typographic Style,然后,还是一头雾水……

LaTeX 循循善诱,最后让你跳入 Tikz 或者 OpenType 或者 TeX 底层语法 或者 版心制作 的大坑中(或者同时跳入)。甚至于让你想写个快速编译中文文档的引擎。(萌新坐等 ApTeX 大业完成)

不知道,有没有可能,让萌新们,可以学完 LaTeX 标记语言,套上一个模板或者宏包,大概就可以做出一个比较符合排版规范的书籍?

或者说 CTeX 已经做得够好了?其余的细节不得不去仔细研究一下排版规范,再加上多年实践,才有可能相对来说完美一点?


@muzimuzhi 谢谢。

我会开一个新 issue。毕竟,想要自己用 LaTeX 排个书的,人群可能也比较多。这样也可以给他们帮个忙。

还有诸如页面大小、内容主题等变量没有剔除。

我也同意。因为,之前随手翻到的一些书籍,页边距好像没有什么规律。

可能是隐变量没有剔除。

建议找一本现成的纸质书,尽量细致地模仿其内页设计。

是的,我找了好多上海三联出版的书,可否问一下,你觉得,上海三联出版的书,是否比较规范?

muzimuzhi commented 5 years ago

不知道,有没有可能,让萌新们,可以学完 LaTeX 标记语言,套上一个模板或者宏包,大概就可以做出一个比较符合排版规范的书籍?

做一个(制作者觉得)比较符合的模板,可能。做一个能满足不同人需求(让使用者觉得比较符合)的模板,特别难。排版的实践很丰富、可以调节的细节很多、多样性需求很长尾,和没有通用而公认的中文排版规范,都是原因。

例如,当你将「行长为字号整数倍」认同为规范时,就遇到了没有照此规范制作的模板的问题。实际上我觉得这一点,至多对版心宽度带来 1/2 字号的影响,对版心高度的影响可能稍大(考虑到中文的行距较大);综合来看,对整体版面的设计不会起到根本性影响。所以,我觉得可以把「版面设计」和「版心具体尺寸确定」分离出来,单独考虑。

你觉得,上海三联出版的书,是否比较规范?

不了解,能力不够。抱歉。

规范有很多层。

上海三联的书,如果限定到一些系列,是符合前两个规范的。而你还会提问,说明可能不符合你自己认同的规范,或你自己还没有形成一套完整自洽的、能说服自己的规范。

RuixiZhang42 commented 5 years ago

@Ranqumn

好像看你希望把英文的所有距离全部换成以中文字距大小

感觉你还是没有理解 pt 这个单位的问题。排印学中的 point 在国内翻译成「一磅」、「一点」,一个 point 具体有多大,在「美国国家标准 National Institute of Standards and Technology」里有明确定义:1 pt = 0.013837 in(NIST Handbook 44, 2018, p. C-20)。

Knuth 在 1978 年发明 TeX 的时候,是按照这个标准来定义的一点。为了方便计算,他决定容忍 10−8 的误差,将 TeX 的一点定义成 1 pt = 172.27 in,不仅更好记,也比之前「更改厘米、英寸之间的换算」带来的「误差」要小两个数量级。

结果 80 年代 Adobe 被发明时,嫌这些数都不好看,完全无视美国国标,决定管他们家的一点叫 1 pt = 172 in。Adobe 家的 PostScript 手册到今天还声称「印刷的一点并没有标准定义」(PostScript Language Reference, 1999)。

TeX 作为更早、更尊重排印传统的产物,因此也提供了「PostScript 一点」这个单位。因为它比传统的、标准的一点稍微大一些,TeX 就管它叫 bp(big point)。

中文字号的定义可以去翻中国国标。由于历史原因,至少大陆的「字号」是基于 PostScript 一点这个单位定义的(这是很被动的)。日本那边用「字级」,以 0.25 mm 为基本单位。不扯远了,就此打住。

既然中国的「五号」被定义成「PostScript 10.5 点」,那么你在 Word、InDesign 里用「10.5 磅」就好了,但是在 TeX 里你就得用「10.5 bp」。

呃,我可以问一下,这个数值具体是怎么来的吗?

Adobe 家做的汉字,字框规格是 1000×1000,(横排)垂直方向 880 在西文基线以上、120 在基线以下。TeX 看基线(毕竟是西方的产物),排 Adobe 家的汉字,顶部预留字号的 88% 就好了。别家做的字,字框不尽相同。

Ranqumn commented 5 years ago

谢谢。

muzimuzhi commented 5 years ago

@Ranqumn

GitHub 的 Markdown 编辑器会把不属于代码的 \, 转义成 ,,这是什么特性?

根据 GitHub Flavored Markdown Spec, Sec. 6.1

Any ASCII punctuation character may be backslash-escaped: \!\"\#\$\%\&\'\(\)\*\+\,\-\.\/\:\;\<\=\>\?\@\[\\\]\^\_\`\{\|\}\~

也即,对 gfm 而言,\,, 是相同的输入。

Ranqumn commented 5 years ago

@muzimuzhi

谢谢。

看来理清 Markdown 还真是有点麻烦……