詩歌的行數是指文本中真實換行符的數量,計算來源檔案中每一個硬換行、分段空行,或是結尾的換列字元。若要計算詩歌的行數,請將整首詩貼到一個瀏覽器型的行數計算工具中,該工具需能分別辨識 LF、CRLF 與 CR 三種結尾,將每一段分類為空白或非空白,並以 Unicode 碼位回報最長的一行。每一個換行 —— 無論是兩節之間、兩句之間,或詩的最末端 —— 都會在總數中加上一個邊界。輸入的結尾若有一個換行字元,便會額外產生一個空白行,因此在純文字編輯器中輸入的一段四行詩句,貼上後通常會顯示為五行。用肉眼計算會失去這個區別,不同的作業系統處理換行字元的方式也不同,這就是為什麼一首在 Windows 上寫好、再貼到 Mac 工具中的詩,可能會顯示不同的總數,除非該工具套用統一的規則。專用的行數計算工具會對詩中的每一行套用相同的規則,並將結果回報給你。

how to count lines in a poem
how to count lines in a poem

詩中的「行」代表什麼

在詩歌中,行是兩個換行字元之間的單位 —— 也就是詩人按下 Enter 鍵的位置。分段空行、各節之間的空白行,以及縮排,全部適用這個規則。行不等於句子、詩節,或螢幕上因自動換行而產生的視覺列。

當詩歌以 PDF 或網頁形式顯示時,你在螢幕上看到的一行,幾乎一定是實際的一行。當同一首詩在純文字編輯器中開啟時,較長的行可能會因視窗寬度而視覺上折行,但只要檔案中沒有真實的換行字元,它仍然只是一行。

這個區別在計算行數時很重要。若你捲動瀏覽詩歌並計算看到的內容,可能會把折行的列算進去、漏掉分段空行,或是誤算結尾的空白行。讀取來源文字的行數計算工具會對每一段套用相同的定義,因此無論詩歌來自聊天訊息、筆記本掃描、DOCX 檔案,還是文學雜誌,結果都一樣。

對於只有一段、行數又短的詩,用手計算還行。一旦詩的長度超過一頁、含有多個詩節,或曾經在多部裝置之間編輯,導致換行字元在 LF 與 CRLF 之間變動,手動計算就會出錯。

逐步計算詩歌的行數

當詩的長度超過幾個詩節,或你需要精確的答案時,請使用瀏覽器型的工具。

  1. 從原始來源複製詩歌。若詩來自網站、Word 文件或 PDF,請直接從那裡複製,不要重新輸入,以保留原本的換行。
  2. 在瀏覽器中開啟 行數計算工具。編輯器立即可用 —— 無需帳號、無需上傳,也沒有提交按鈕要按。
  3. 將詩貼到編輯器方塊中。四個計數器會即時更新,編輯器下方的即時字元計數器會顯示輸入量與工作上限的對比。
  4. 依下列順序讀取結果:總行數、非空白行數、空白或僅含空白字元的行數,以及最長行的長度。總行數永遠等於非空白行數加上空白行數,這是最快的交叉檢查方式。
  5. 若你想貼上第二個版本或比較同一首詩的兩份草稿,請使用清除按鈕重設編輯器。

若你貼上一首簡短的四行詩,詩句之間以換行分隔,且結尾沒有換行字元,

行數計算工具會回報總行數 4、非空白行數 4、空白行數 0。對於像 "Violets are blue" 這樣沒有結尾標點的一行,最長行長度會顯示為 16 個碼位。將該行的字母與空格數出來做快速的交叉檢查:V-i-o-l-e-t-s 是 7 個字母,加上一個空格,"are" 是 3 個字母,加上一個空格,"blue" 是 4 個字母。7 + 1 + 3 + 1 + 4 = 16 個碼位。算式吻合,這就是確認工具是否如你所預期的方式讀取詩歌的最簡單方法。

為什麼分段空行會讓手動計算失準

詩歌比散文更常使用空白行作為詩節分隔,這代表一首多節詩會帶有額外的空白行,而沒有經驗的計算者會忽略這些。一首包含三個詩節、各有四句的詩,依行數計算工具的標準來看不是 12 行 —— 而是 14 行,因為兩個詩節之間的空白行也算在內。

這與詩人思考換行的方式一致。空白行是詩的結構的一部分:它告訴讀者暫停、呼吸,並重起韻律。在 PDF 或印刷書中,以視覺列來計算行數,上面的例子通常會得到 12 行;但計算來源檔案中的換行字元,則會得到 14 行,其中兩個標記為空白。

請將空白行數與總行數一起使用,以確認詩節數符合你的預期。若一首詩宣稱每節四行、共三節,而行數計算工具回報 2 個空白行,數字就對得起來。若回報 0 或 1,則表示有一個或多個詩節分隔不見了,或是詩節在沒有分隔的情況下被合併了。

最長行、縮排與視覺換行

最長行指標告訴你哪一句詩依 Unicode 碼位計算最長。碼位是 Unicode 標準指派給每個視覺元素的單位,不論它在記憶體中如何儲存。對於一般的拉丁字母,一個字母等於一個碼位。對於像 😀 這樣的表情符號,內部的兩個 JavaScript 程式碼單元會合併成一個碼位。對於以「e」後接組合銳音符這種分解形式輸入的附加音字母,兩個碼位會組合成一個可見字母。

行數計算工具回報的是碼位長度,而不是 UTF-16 程式碼單元、位元組或終端機儲存格。一個長破折號仍算一個碼位。一個 Tab 字元也算一個碼位,即使編輯器通常將它顯示為四或八個欄寬。組合記號、變體選擇器與零寬連字各自分別算一個碼位,因此使用風格化 Unicode 寫成的詩,其最長行數會與同樣形狀但以純 ASCII 寫成的詩不同。

當你要比較同一首詩的兩份草稿時,這個指標很有用。碼位長度提供一個穩定的單位,不會因為你在不同作業系統或瀏覽器之間複製草稿而改變。它也能告訴你草稿中最長的一行是否已超出出版社所規定的行長,即使編輯器中的折行寬度顯示不同。

在不同編輯器與裝置之間對齊計算結果

不同的程式以不同的規則計算行數。有些文字編輯器將行定義為換行字元的數量。有些則在摺疊掉結尾的空段後,將行定義為邏輯記錄。有些會在檔案以換行結尾時計入一個額外的空行,有些則不會。

行數計算工具的規則很明確:每一個 LF、CRLF 或單獨的 CR 都會產生一個邊界,包括輸入結尾處的邊界。空輸入是唯一定義為零行的情況,其他任何內容都至少有 1 行。CRLF 被視為一個邊界,絕不會是兩個,因此在 Windows 上儲存的詩與在經典 Mac 上儲存的詩,在這條規則下會得到相同的總數。下表顯示此工具如何依這些規則,將特定輸入對應到總行數、非空白行數與空白行數。

範例輸入總行數非空白空白套用的邊界規則
(空輸入)000無內容 —— 定義為零行
alpha (無換行)110沒有分隔符
alpha 然後一個 LF211一個 LF 產生一個空白的結尾段
僅一個 CRLF202CRLF 分割一次,兩側各留下一個空白段
alpha CRLF beta220CRLF 算一個邊界,絕不會是兩個
alpha 單獨 CR beta220單獨 CR 視為一個邊界
alpha 然後兩個 LF312兩個結尾分隔符產生兩個結尾空白段
同一段輸入中混合 LF、CRLF 與 CR符合分隔符數量 + 1至少含一個非空白字元的行修剪後內容為空的行CRLF 優先於單獨 CR 或 LF 進行比對,因此 Windows 的邊界不會被重複計算

若你將行數計算工具與終端機中的 wc -l、Notepad++ 的狀態列,或文書處理器的「行數」相比,只要檔案以換行結尾,結果必然會差一行。這個單行的差距是最常見的混淆來源,但它不是 Bug —— 而是「計算邏輯記錄」與「計算換行字元」之間的差異。請以行數計算工具所明列的規則作為參考基準,當你需要嚴格的定義時,將其他工具的計數視為需要向其對齊調整。

若你想依行號引用詩中的特定行 —— 用於引用、課堂討論或修訂筆記 —— 下一步就是為這些行加上編號。請參考 如何在 Word 與純文字中加入行號,該工作流程會保留原始詩作不變,並在每一行旁邊插入編號。

當你需要的是字數或字元數

行數計算回答的是一個問題,而這不一定是老師、編輯或出版方所問的問題。若作業題目要求的是詩的字數,總行數會失準,因為每行通常包含多個字。若雜誌為欄位指定字元上限,行數也會低估。

在這些情況下,將同一首詩貼到 字數計算工具中,即可從同一段貼文中讀取字數、字元數、句子數與閱讀時間等統計資料。這兩個工具之間不共用設定,也不會彼此同步;你只需各貼上一次即可。社群媒體貼文的字元限制又是另一套規則,專用的字元計算工具會針對 X、LinkedIn 或 SMS 業者回報不同的長度。

若你在權衡各種選項,如何在 Excel 中計算某數字出現的次數對此有詳細說明。