jjgod / blog Random notes by Jjgod Jiang.

Archive for July 2005

FrameMaker Tips

FrameMaker 是 TeX 以外我最喜欢的排版软件了,虽然界面有点寒碜,但简单直接,不像 InDesign 那么麻烦 (况且 InDesign CS2 实在是太慢了…),中文支持也不错,除了 OpenType 的支持有点限制,实在是很方便的。这里写点我使用中记下来的小技巧。 FrameMaker 7.0 以上才有比较好的中文支持,所以建议使用 7.0 或者 7.1 版本。不需要是多语言的版本。 中文字体和英文字体一般是不能混合选择的,如果你希望一段话中,汉字使用黑体,英文使用 Myriad,就得自己创建 combined font,FrameMaker 默认已经创建了两个,FMSongti 和 FMHeiti,在菜单中选择 Format->Document->Combined Fonts…,就可以 Add 自由选择 Asian Font 和 Western Font 的字体了,此后在 Paragraph Designer 的 Default Font 中选择你新建的这个字体即可。 默认的配置是,只有某些特殊的情况下才压缩汉字的标点符号,例如句号和引号的距离,但可以在 Paragraph Designer 的 Asian->Asian Punctuation 中选择 Always Squeeze 解决这个问题。 必须先创建一个颜色,然后才能使用它,你可以在 View->Color->Definitions 里选择,当然,你可以自己设置 [...]

Web 与排版学上的字体问题

关于字体的讨论,其实无论是国外还是国内,都已经有不少,可是我发现绝大部分的内容或者有失偏颇,或者不够全面,下面我试图将自己一段时间内的观点总结一下,以求提出一个比较容易接受的 CSS 字体选择的建议。 事关大小 字体的大小总是一个困扰人的问题,用绝对单位还是用相对单位?或者具体来说,用什么单位?ex? em? pt? px? 百分比? 让我们看看 CSS 2.1 Spec 中的说明: 相对大小包括:em, ex, px 绝对大小包括:in, cm, mm, pt, pc em 就是相对 font-size 制定的大小而言的,例如 margin: 1.2em 就是指设置 1.2 个字符宽度的 margin,当 em 本身用于 font-size 时,指的是它所继承元素的相对大小。 百分比也是相对 font-size 而言的。 因此我认为,em 和百分比都不适合设置字体的大小,因为相互变动的因素太多了,修改一个地方就有可能影响很多其他的地方。ex 是根据拉丁字母的 x 的高度而言的,这不适合汉字的大小,所以也否决了。px 是根据当前显示设备的解析度而言的,同一个 px 对应不同的设备——比如屏幕或纸张——实际的大小会有一定差异。 所以我认为,如果网页中应该存在作为绝对参照系的长度,那么 pt 和 px 应该是首选,其他的长度根据这个绝对参照系,按照百分比或者 em 来变动。 下面谈谈网页和印刷中大小造成的差异。99% [...]

什么是坏的系统设计

什么是好的系统设计?我不知道,但依我看,LaTeX 是坏的系统设计的一个典型,MFC 也如此,而坏的系统最重要的一个特点是,使用者不能把它作为一个黑匣子看待,而必须了解其内部构造才能有效使用它。 凡系统构造的时候,总希望隐藏内部的复杂性于简洁的接口背后,这样,用户只需要知道如何调用接口、这个接口实现了哪个功能就可以了,而不必了解其实现的细节。尽管 LaTeX 也是如此宣称的,可事实上并非如此,不了解实现细节,终究只能用到一些皮毛,稍微复杂一点的问题便解决不了。 举个例子,前些日子我希望实现这么一个功能,把每个章节标题的序号单独放在一列中,而正文与章节标题的文字对齐。如下: 1 Hello world.. A quick brown fox jumps over a lazy dog. 按照默认的情况则是: 1 Hello world A quick brown fox jumps over a lazy dog. 可是,就算是实现书籍排版上这么常见的一个功能,LaTeX 也没有提供任何接口做到,不仅标准的文档类里面没有,连附加的宏包也没有实现这一功能的。所幸辗转所得一段代码能解决这个问题: \makeatletter \def\@seccntformat#1{\protect\makebox[0pt][r]{\csname the#1\endcsname\quad}} \makeatother 然而这段代码,根本是重新定义了 article 文档类中所用到标题数字格式,用到的纯属 TeX 的方法,和 LaTeX 简直毫无关系,试问若不看 article 的代码,怎能写出这段重定义的代码来,而这样一来,LaTeX 又怎么能算提供了一个黑匣子? 为什么说 LaTeX 对开发者来说也是糟糕的呢?是因为要写出这段代码来解决问题,首先你得对 LaTeX 的编程有所了解,否则 \makeatletter、\makeatother 是什么意思无从得知,第二得对纯 [...]

After →