在所有情況下都允許在斜線後換行,而無需使用宏

在所有情況下都允許在斜線後換行,而無需使用宏

我正在使用 排版表格longtable。我有一個p{2in}專欄。我的列中有檔名。有時這些檔名很長。他們裡面有斜線。有點像/home/user/somebody/project1/file1/subfile1/this-is-the-filename.txt。有什麼辦法告訴LaTeX允許在斜線後換行嗎?

答案1

假設您的列中的其他上下文中沒有斜杠,您可以執行以下操作:

\makeatletter
{\catcode`\/=\active
  \gdef\slashbreak{
    \catcode`\/=\active
    \def/{\char`\/\penalty\z@}}
}
\makeatother
...
\begin{slashbreak}
\begin{longtable}
...
\end{longtable}
\end{slashbreak}

這將/在斜線中斷環境中建立一個活動角色,以便它的任何實例都將允許隨後中斷。

為什麼它是這樣的

在 TeX 中操作字元代碼可能很棘手——字元的字元代碼將是它被消化時的代碼,這不一定是您所期望的。如果我們省略周圍的大括號和類別代碼的設置/,當我們嘗試重新定義時,我們會得到一個丟失的控制序列,因為類別代碼/將是 12 而不是 13。\verb批次更改,但在另一個命令的參數中不起作用:這些更改對於逐字模式工作來說太晚了,因為原始類別代碼是在TeX 最終擴展巨集時建立的\verb

我們在這裡使用的慣用語,即更改群組內的類別代碼並執行\gdef(縮寫,\global\def以便可以在群組外存取定義)是此類類別代碼操作的典型做法。如果您深入研究 LaTeX 原始程式碼,您會發現很多類似的編碼正在發生。

相關內容