用 lstlisting 換行

用 lstlisting 換行

我想使用帶有 .txt 檔案的清單包來顯示 CSV 檔案中的幾行內容breaklines=true

\documentclass{article}
\usepackage{listings}
\usepackage{xcolor}
\lstset{%
  backgroundcolor=\color{lightgray},
  basicstyle=\ttfamily\footnotesize,
  breaklines,
  showspaces
}

\begin{document}
\begin{lstlisting}
K01980;23S ribosomal RNA;11.79648646;17.54756407;16.55812848;7.070375553;9.904088434;10.33047681;11.34235283;12.84408234
K01977;16S ribosomal RNA;7.433653271;11.21805284;10.47502621;4.555449801;6.223779066;6.547853101;7.12047883;8.056722
K03046;DNA-directed RNA polymerase subunit beta' [EC:2.7.7.6];1.279373326;1.843958244;1.291530419;0.91598316;1.444456949;1.370082994;1.471863596;1.274232464
\end{lstlisting}
\end{document}

但輸出結果並不十分令人滿意。

在此輸入影像描述

  • 中斷發生得很早,因此第一行末尾有很多空白,第二行超出了可用的文字寬度。第二行沒有換行符號。
  • 每行後面有一個空白行。

我想要這樣的東西:

K01980;23S ribosomal RNA;11.79648646;17.54756407;16.55812848;
  7.070375553;9.904088434;10.33047681;11.34235283;12.84408234
K01977;16S ribosomal RNA;7.433653271;11.21805284;10.47502621;
  4.555449801;6.223779066;6.547853101;7.12047883;8.056722
K03046;DNA-directed RNA polymerase subunit beta' [EC:2.7.7.6];
  1.279373326;1.843958244;1.291530419;0.91598316;1.444456949;
  1.370082994;1.471863596;1.274232464

答案1

listings當字元區塊屬於同一內部類別時,不會破壞它們。在這種情況下,,數位其他類別特別令人感興趣。預設情況下,字元會按照您的預期分配到類別,即字母屬於類別,數字是數位,符號為其他

當一個找到了,全部如下或者數位讀取字元直到非/非-數位被發現。然後該系列作為一個塊輸出。現在所有非角色都會發生同樣的情況直到下一個被發現。以這種方式處理輸入可以防止範例中的一長串數字、句點和分號被破壞,因為沒有發現開始一個新的塊。

以下是如何解決這個問題的建議:

  • 重新排列字元類別,使建置的區塊對應於特定用例的邏輯資料單元。例如,您可能想要將數字和句點也移動到類別,同時將分號保留為類別其他。這可以透過添加來完成

    alsoletter={0123456789.}
    

    \lstset。現在,所有十進制數字之後和分號之後也可以出現換行符號。

  • 更直接的是使用該literate選項並將分號重新定義為允許在符號後換行的版本:

    literate={;}{{;\allowbreak}}1
    

兩種解決方案現在都給出了更有吸引力的結果

在此輸入影像描述

相關內容