詩中的一行,就是詩人在哪裡切斷文字,與字詞在印刷頁面上的呈現方式,或文字編輯器如何換行無關。作者插入的每一個換行都會成為一行,而 行數計算工具 會直接在您的瀏覽器中讀取這些換行,並回報總行數、非空白行、空白行以及最長行的數據。由於詩的形式通常以精確的行數來定義——俳句三行、十四行詩十四行、十九行詩(villanelle)十九行——能夠根據權威定義來驗證這個行數,對於寫作與編輯同樣重要。基於瀏覽器的行數計算工具能一致地處理所有常見的行尾(LF、CRLF,以及單獨的 CR),因此從 Word、記事本、終端機或網頁剪貼簿貼上同一首詩,都會產生相同的結果。無需上傳也無需帳號,整個計算都在您貼上的文字上本機執行,而關於何者算作一行的規則,會以淺白的文字直接列在結果下方。

how to count lines in poetry
計算詩的行數:形式、規則與一個快速工具

詩的形式與其要求的行數

對詩人而言,計算行數很少只是趣聞;它是一項最基本且機械式的檢查,用以確認一首詩符合其所宣稱遵循的形式。傳統的西方詩形式都有固定的行數,而這些行中的格律、押韻與疊句,只有在行數正確後才有意義。在您將任何內容貼上工具之前,先了解您要瞄準的數字會有所幫助。

下表列出幾種廣為教授的形式,以及每種形式所要求的行數。請將其視為一份目標清單,而非風格指南。

形式要求行數詩節配置
俳句3一節,三行
短歌5一節,五行
五行打油詩5一節,五行
民謠詩節每節 4 行四行詩節,通常為數節
四行詩節(一般)4一節
莎士比亞十四行詩14三節四行詩加一個對句
佩脫拉克十四行詩14八行體加六行體
斯賓塞十四行詩14三節連結的四行詩加一個對句
十九行詩(Villanelle)19五節三行詩加一個四行詩節
六六雙疊體39六節六行詩加三行結尾
伽扎爾抒情詩5+ 個對句帶疊句的對句
自由詩無固定總數作者自訂

這些行數是各形式已出版的慣例。您自己的詩可能合理地偏離——現代主義與當代詩人不斷重塑傳統結構——但如果您打算將一首作品標示為十四行詩,那麼行數計算工具能讓您以最快的方式確認行數恰好為十四行。

行數計算工具如何定義「一行」

一首詩的輸入方式,決定了任何行數計算工具會回報什麼。行數計算工具採用三條明確的規則,符合文字檔案實際儲存換行的方式。

  • 完全空白的貼上內容為零行。沒有字元,就完全沒有行。
  • 一旦出現任何文字,就至少有一行。一個沒有結尾換行的單字也算作一行。
  • 每個換行字元(LF)、每個 CRLF 組合,以及每個單獨的歸位字元(CR)都恰好算作一個分隔界線。CRLF 被視為一個分隔符,而非兩個。同一段貼上內容中混合不同的行尾是可接受的,這在文字曾於 Windows、Unix、經典 Mac、終端擷取與剪貼簿來源之間傳遞時格外重要。

從這些規則可以衍生出兩個結果。首先,結尾的換行會產生一個最後的空白行:文字 alpha 後接一個 LF,等於總共兩行——alpha 那行與一個空白的結尾行。其次,只包含一個 CRLF 的貼上內容等於兩個空白行,因為分隔符的兩側各有一個空白段落。即使最後一段沒有文字,工具仍會保留此行為,而非默默地將其去除。這種一致性正是讓這個計算工具可用於形式檢查的原因。

如何使用行數計算工具計算詩的行數

不論詩是一個對句還是長篇的六六雙疊體,程序都是一樣的。所有操作都在編輯器內進行,無需送出按鈕。

  1. 複製詩的文字。請包含詩人使用的每一個換行,包括詩節之間的空白行。請勿手動重新排版文字——保留作者原設置的換行。
  2. 將其貼上編輯器。統計資料會在文字貼上的瞬間立即更新。無需上傳、無需伺服器呼叫,也無需等待結果頁面。
  3. 依序讀取四項統計資料。請注意總行數、非空白行、空白或僅含空白字元的行,以及以 Unicode 碼點(code point)計量的最長行。介面會清楚標示最後一項指標,讓您不會將其誤判為視覺上的欄寬。
  4. 交叉驗算。總行數應永遠等於非空白行加上空白行。若數字加總不符,請重新貼上一次,以排除複製時的錯誤。
  5. 與您詩的形式所要求的行數進行比對。十四行詩應讀為總共 14 行,俳句為 3 行,villanelle 為 19 行。若數字恰好差一行,且文字結尾沒有換行,這是最常見的誤差來源。
  6. 完成後清除編輯器。「清除」控制項會清空輸入內容並將所有統計資料重設為零,這樣您下次貼上的詩就不會與前一首混雜在一起。

解讀四項統計資料

每個數字回答關於您貼上的詩的不同問題,這些數字設計為應一併閱讀,而非單獨解讀。

  • 總行數會計算工具在依 LF、CRLF 與 CR 切分後所產生的每一個段落,包括位於檔案開頭、中間或結尾的空白段落。這是與您詩的形式所要求行數進行比對的數字。
  • 非空白行會計算經過 JavaScript 風格的 Unicode 空白字元修剪後,仍至少包含一個字元的每一個段落。一行中只有單一字母但周圍有空格,仍算非空白;一行中只有空格或定位字元(tab),則算空白。
  • 空白或僅含空白字元的行會計算修剪後不剩任何內容的段落。在有詩節分隔的詩中,此數字通常是詩節間隔的數量,加上貼上內容若以換行結尾時的最後一個段落。
  • 最長行(碼點)會以 Unicode 碼點回報最長段落的長度,而非 UTF-16 碼元(code unit)、位元組或終端機欄位。一個輔助平面(supplementary plane)的表情符號,例如 😀,算作一個碼點;而一個分解的附帶音符字母,例如 e 後面接一個組合銳音符號,則算作兩個碼點。

由於這個工具絕不會計算部分貼上的內容,也不會默默地限制自身的顯示,因此您可以放心信任所接受的輸入所對應的數字。如果貼上內容超過 1,000,000 個 UTF-16 碼元的輸入上限,工具會隱藏先前的統計資料並改為回報錯誤,而不會傳回部分結果。

數位詩中的常見邊界情況

有幾種格式情況容易讓人不慎出錯,特別是當詩是從 PDF、電子郵件或使用軟換行的文書處理器複製而來時。

  • 詩節分隔。詩節之間的一行空白,在行數中會顯示為一個空白行。大多數形式合規檢查是以包含這些空白行在內的總行數為基礎,因此請將其保留。
  • 標題與題詞行。置於詩上方的標題或獻詞會計入總行數。如果您正在驗證嚴格的形式,請僅貼上詩的本文。
  • 視覺換行與實際換行的差別。在文字區域中換行的長行,仍算作一個邏輯行。換行是一種顯示行為;只有 LF、CRLF 與 CR 才會建立新的一行。
  • 結尾換行。以換行結尾的貼上內容,其回報的行數會比沒有結尾換行的貼上內容多一行。這是所謂的俳句讀成四行而非三行,最常見的原因。
  • 混合行尾。如果某詩節是在 Windows 上編輯,而另一詩節是在 Unix shell 上編輯,CRLF 與 LF 可能會在同一次貼上中並存。工具會正確計算每一個,不會將 CRLF 誤算為兩個分隔符。
  • 以定位字元縮排的行。定位字元在「最長行」指標中算作一個碼點與一個字元,即使編輯器可能將其顯示為跨越多個欄位。

將計算工具與編輯器或字數計算工具進行比對

如果您將行數計算工具與文書處理器或命令列工具交叉比對,請預期可能出現偶爾的差異,並了解這些差異從何而來。有些編輯器將行定義為換行字元,並在檔案不以換行結尾時回報較小的數字;其他編輯器則將行定義為邏輯記錄,並完全抑制結尾的空段落。甚至有少數較舊的工具會將 CRLF 計算為兩個行尾。行數計算工具刻意採用一條一致的規則——每個 LF、CRLF 或 CR 恰好建立一個分隔界線,而結尾的換行會多加一個空白行——並在介面中標示該規則,讓結果可以重現。

若需要字數與字元總數,請改用專門的計算工具,而非從行數推算。行數計算工具的重點在於結構性的行數與最長行指標,並不會回報字數、句數、位元組或段落數。一旦行數符合您的詩的形式,請改用音節或字數工具來檢查格律的內部規則。

若要在同一首詩的兩個版本之間進行可靠的比對,請將兩者貼入同一個瀏覽器工作階段。由於計算是本機執行且具確定性,同一段 UTF-16 碼元序列在重新載入後會產生相同的統計資料。若兩個數字不一致,最可能的原因包括缺少或多了結尾換行、編輯器自動刪除了空白行,或其中一份副本中夾帶了多餘的軟換行。在比對之前先統一貼上格式,會比手動重新編輯任一版本來得更快速。

如果您正在權衡各種選項,如何在 Notepad++ 中移除重複的行 對此有詳細說明。

如果您正在權衡各種選項,如何轉換成豬拉丁文:規則與一個快速工具 對此有詳細說明。