CSS3 B&B 規範裡 <position> 兩個取值語法的邏輯描述

中文版:http://www.w3.org/html/ig/zh/wiki/Css3-background#the-
background-position
英文版:http://dev.w3.org/csswg/css3-background/#the-background-position

先說一下,這不是技術問題而是規範怎麼寫比較好懂的文字邏輯問題。

規範原文對於 <position> 有兩個取值的狀況是這樣描述的:

  # 若給定的取值有兩個且至少有一個不是關鍵字,則第一個值表示水平位置(或
  # 偏移),第二個值表示垂直位置(或偏移)。
  #
  # (If two values are given and at least one value is not a keyword,
  # then the first value represents the horizontal position (or offset)
  # and the second represents the vertical position (or offset)."

我一開始完全看不懂為什麼有「且至少有一個不是關鍵字」的這個條件,後來才知
道是為了排除 'top left' 或是 'top center' 這種情形。在這種情形下,'top'
雖然是第一個值但是指定的是垂直位置。

但是這邊這種敘述有幾個問題:

1a. 這樣就沒有描述到兩個都是關鍵字,而且第一個水平、第二個垂直的狀況。
例: 'left top'、'left center'。
1b. 沒有描述到兩個都是關鍵字,但是位置倒過來的情形。例: 'top left'、
'top center'
2. 沒有排除 'top 10%' 這種好像滿足「且至少有一個不是關鍵字」,但是實際上
不合語法的情形。

理論上這些關鍵字在後面的定義有講這部份,所以不能說規範有模糊之處,但是在
沒講清楚的情況下,丟一個「且至少有一個不是關鍵字」這樣的句子實在不是很好
懂。這裡有幾個選擇:

A. 維持原樣,規範的描述是可以接受的,可能加一個「兩個都是關鍵字的情形請
看下面關鍵字的描述」之類的。

B. 改成

  | 若給定的取值有兩個且其中有一個是 ‘left’、‘right’、‘top’、
  |‘right’,則有 ‘left’、‘right’ 的那個取值表示水平位置,另一個值
  | 表示垂直位置(或偏移),有 ‘top’、‘bottom’ 的那個取值表示垂直位
  | 置,另一個值表示水平位置(或偏移),否則,第一個值表示水平位置(或偏
  | 移),第二個值表示垂直位置(或偏移)
  |
  | (When two values are given, ‘left’ and ‘right’ always
  |  represent the horizontal position (or offset), while ‘top’ and
  | ‘bottom’ always represent the vertical position (or offset). If
  |  none of these keywords is given, then the first value represents
  |  the horizontal position (or offset) and the second represents the
  |  vertical position (or offset).)

這解決了 1a. 1b. ,但是沒有解決 2. 而且有點冗長,另外英文版不提其中一個
是 'left'、'right'、'top'、'bottom' 的時候另外一個的情形了(這樣好
嗎?)。現在的中文版用的是這個敘述。

C. 把 B. 反過來

  | 若給定的取值有兩個且沒有一個是 ‘left’、‘right’、‘top’、
  |‘right’,則第一個值表示水平位置(或偏移),第二個值表示垂直位置(或
  | 偏移),否則,有 ‘left’、‘right’ 的那個取值表示水平位置,有
  | ‘top’、‘bottom’ 的那個取值表示垂直位置。
  |
  | (When two values are given and none of these is‘left’,
  | ‘right’, ‘top’ or ‘bottom’, then the first value represents
  |  the horizontal position (or offset) and the second represents the
  |  vertical position (or offset). Otherwise, ‘left’ and ‘right’
  |  represent the horizontal position (or offset) , while ‘top’ and
  | ‘bottom’ represent the vertical position (or offset)

或是「否則...」的那個句子改成「否則,參見下面對於關鍵字的敘述」。這同樣
沒解決 2.

D. 英文專用句型

  | If two values are given, the first value represents the horizontal
  | position (or offset) and the second represents the vertical
  | position (or offset), unless one of these is ‘left’,
  | ‘right’, ‘top’ or ‘bottom’, in which case see below for
  | definitions of these keywords.

這個方法好像在中文行不通,因為中文「除非」一般不會放後面... 還是沒解決 2.


大家怎麼想?有沒有更好的描述方式(中文或英文)?歡迎有參與過數學書的編輯
工作的人提點意見。我目前是中文喜歡 C. 英文喜歡 D.,如果沒有什麼別的意見
之後我就把中文版改成 C. 了。


此致

Kenny

Received on Friday, 2 March 2012 08:53:39 UTC