若要變更 InDesign 中的換行字元,請將您的文字貼到 Line Break Converter,選擇符合您目標的模式(真實斷行轉為可見 \n、可見 \n 轉為真實斷行,或真實斷行轉為單一空格),然後將轉換後的結果複製回 InDesign。以 InDesign 的術語來說,您可以用鍵盤快速鍵控制的「行尾」是一個由 Shift+Enter 產生的軟換行,但您貼上文字時控制的「行尾」則是底層字元:實際的換行字元(CRLF、CR 或 LF),或是兩個可列印字元反斜線和 n。InDesign 在文字框中對這兩種情況的處理方式截然不同:真實換行會在框內開始新的一行,而字面上的 \n 則會顯示為兩個疊在您文字旁邊的字元。由於 InDesign 在貼上時不會自動將其中一種轉換為另一種,當差異很重要時,您必須在 InDesign 外部準備文字,而這項準備工作正是 Line Break Converter 的設計目的。

how to change line end in indesign
How to Change Line End in InDesign for Pasted Text

在 InDesign 貼上時,「行尾」實際上代表什麼

當您從 Word、Notepad、CSV 檔、記錄檔或 JSON 片段複製文字時,您帶到剪貼簿的換行字元在您嘗試使用該文字之前都是隱形的。透過剪貼簿傳遞的換行字元有兩種不同的形式。實際換行是一個控制位元組(Windows CRLF 的情況則是兩個位元組),會將游標移至下一列;而像 \n 或 \r\n 這樣的可見跳脫字元則是兩個普通可列印字元,看起來像個標記,但不會產生任何排版效果。InDesign 在匯入時會接受前者,因此每個真實換行會在文字框內成為獨立的一行。InDesign 也會顯示後者,因此每個可見的 \n 會在單字中間顯示為一個字面上的反斜線後接著 n。

這正是幾乎所有「為什麼我的文字貼上後斷行很奇怪」抱怨的根源。解決方法很少在 InDesign 內部;而是在來源中。選擇正確的轉換器模式,是乾淨貼上與文字框充滿雜亂反斜線之間的差異。MDN 對 JavaScript 跳脫序列的參考資料,在語言層級描述了相同的差異,其中反斜線 n 是兩個字元,而換行是一個控制碼(MDN — escape sequences)。

三種轉換模式並排比較

Line Break Converter 正好提供三種模式。每種都是確定性的:每個可識別的邊界只會產生一個替換,不多也不少。下表摘要說明在每種情況下輸入與輸出之間的變化,因此您可以在碰鍵盤之前,為 InDesign 貼上挑選合適的模式。

模式輸入包含輸出包含最佳 InDesign 用途
實際轉跳脫真實的 CRLF、CR 或 LF 邊界每個邊界一個字面上的反斜線 n將多行來源摺疊為單一可見列以便審閱或文件化
跳脫轉實際字面上的 \r\n、\n 或 \r 序列每個可識別序列一個 LF 換行在置入之前,從 JSON 風格字串、記錄傾印或設定區塊中還原真實行
實際轉空格真實的 CRLF、CR 或 LF 邊界每個邊界一個普通空格為說明文字、替代文字或表格儲存格產生乾淨的單行內容

這三種模式都不會修剪結果、推測標點、摺疊重複的空格,或依照寬度換行。它們都會對每個可識別的邊界保留一個替換,因此即使之後視覺上的空白需要另外清理,數量仍是可逆的。

在 InDesign 中逐步轉換行尾

  1. 從文字所在的任何位置(文件、電子郵件、CSV、記錄檔)複製來源文字。
  2. 將該文字貼上或輸入到 Line Break Converter 的輸入區域。輸入欄位最多可接受 1,000,000 個字元。
  3. 選擇符合您目標的模式:實際轉跳脫、跳脫轉實際,或實際轉空格。
  4. 點擊 Convert。預覽會顯示您將取回的完整字串;實際換行會在預覽中建立新列,而跳脫值則會以可見方式顯示。
  5. 將結果下載為 UTF-8 TXT 檔案,或直接從預覽中複製。下載的位元組與預覽的字串完全相符。
  6. 將轉換後的文字貼到您的 InDesign 文章、表格儲存格或錨定文字框中。
  7. 在 InDesign 中將游標放在一個具代表性的行內,並在完成貼上之前確認行的行為符合您的預期。

如果您在轉換後編輯輸入或變更模式,先前的結果會被清除,其下載連結也會失效。原始輸入文字區永遠不會被覆寫,因此您可以安全地切換模式而不會遺失來源。預覽中長列的視覺換行不會在下載輸出中插入任何實際的換行位元組。

InDesign 情境與應選擇的模式

三個反覆出現的工作流程可以清楚對應到這三種模式。首先,當文案編輯傳給您一個多行區塊,而您想要確切驗證每一行在哪裡結束時,實際轉跳脫模式可讓您將整個區塊視為一列來閱讀,並計算邊界而不會遺失它們。其次,當開發人員交給您一個 JSON 風格的設定區塊,而其中的換行已被來源系統跳脫時,跳脫轉實際模式會將每個字面上的 \r\n 或 \n 轉為真正的 LF,讓該區塊在文字框內以段落形式呈現。第三,當您需要將多個簡短的產品標題或替代文字片段放進同一行,以用於單列表格儲存格時,實際轉空格模式會產生乾淨的內容,同時保持原始行與產生空格之間一對一的對應。

有一個實用的防護原則適用於所有三種情況:真實換行是一個控制位元組,某些字串語法(JSON、JavaScript、SQL、shell)會拒絕接受它,除非它再次被跳脫。如果您打算將轉換後的文字貼回程式碼或序列化格式中,您可能需要在跳脫轉實際模式完成工作後,再使用實際轉跳脫模式,這在實務上代表應在其目的地環境中檢查結果,而非僅信任轉換器。

Windows 上的 CRLF 與雙重跳脫陷阱

Windows 的 Notepad 會將每個行邊界寫成 CRLF 配對,這是兩個位元組:一個歸位字元後接著一個換行字元。天真的轉換可能會將該配對視為兩個邊界,並產生像 \r\n\n 或兩個獨立 \n 標記這樣的雙重跳脫。Line Break Converter 會在辨識單獨的 CR 或 LF 之前先辨識它,因此單一的 Windows 行邊界在實際轉跳脫模式下永遠會變成單一字面上的 \n。同樣的規則反過來也成立:當輸入包含四個字元的字面拼法 \r\n 時,它會比較短的 \n 或 \r 序列優先匹配,因此跳脫轉實際的輸出會維持每個邊界一個 LF,而不會意外地只針對反斜線進行分割。MDN 為 String.prototype.replace 記錄了這種優先順序模式,在該模式中,每個出現位置的第一個匹配替代項目會勝出。

這在 InDesign 中很重要,因為典型的貼上流程是從 Windows 編輯器到剪貼簿再到 InDesign 文章。如果您的來源位於 Windows 上,請預期每個邊界都是 CRLF,並信任轉換器的預覽在貼回之前確認數量。因此,連續的空白行會變成連續的可見跳脫或連續的真實換行,絕不會被摺疊成一個。

限制、錯誤與此工具不會做的事

此轉換器刻意保持精簡。它每次執行最多接受 1,000,000 個字元、以可見的錯誤拒絕空輸入、在瀏覽器內執行所有轉換而不進行上傳,並下載不含位元組順序標記的純 UTF-8 文字檔。編輯輸入或切換模式會清除先前的結果並撤銷其物件 URL,因此舊的下載不會被誤認為目前的設定。此工具不會解析 JSON、JavaScript、CSV、HTML、Markdown、shell 語法,或超出三種已記錄字面序列之外的引號字串跳脫,這表示多個前置反斜線不會依照程式語言的跳脫深度規則進行解讀。

它也不會移除所有空白、轉換定位符、依照寬度換行、在輸出中保留混合的原始行尾樣式,或插入 HTML br 標籤。跳脫轉實際的輸出會將所有建立的邊界統一為 LF,因此來源中任何原始的 CRLF 樣式在轉換後都會遺失。若要完全刪除斷行,請使用 Line Break Remover;若要對定位符和多個空格進行更廣泛的空白清理,Whitespace Remover 是下一步。針對段落感知的版面調整,您會希望在貼上後套用 InDesign 自己的段落樣式,而不是再執行額外的轉換。

用於 InDesign 文字清理的相關工具

Line Break Converter 介於本類別中兩個相關工具之間。當您需要刪除換行而不是轉換它們時,Line Break Remover 處理標準化換行上的刪除、取代和段落正規化動作。當問題是散佈在貼上內容中的雜亂定位符、雙空格或空白行時,Whitespace Remover 提供三種明確的模式:摺疊水平間距、移除空白行,或移除所有空白字元。針對經常帶著相同 CRLF 包袱到來的 Word 特定貼上,關於在 Word 中將換行變更為 \n 或真實斷行的指南會逐步說明如何使用相同的轉換器搭配 Word 來源。針對編號清單、前綴或後綴套用於每一行的情況,該指南中連結的線 oriented 工具可讓您在不離開瀏覽器的情況下,獲得確定性的下一步。

如需更深入的探討,請參閱 How to Count Lines in Word Document With Confidence。