逐字换行

逐字换行

我想在Verbatim环境中启用自动换行;此外我不想使用它,lstlisting因为它不会具有完全相同的字体形状,Verbatim并且逻辑编程中使用的一些其他特殊字符\+不会显示相同的内容。我应该只使用Verbatim环境,但似乎没有换行选项。fancyvrb也不起作用,因为我们需要知道何时换行。我需要它是自动的。

答案1

这里有个小技巧。它将逐行的内容保存在允许换行的垂直框内:

\documentclass[a5paper]{article}
\usepackage[T1]{fontenc}
\usepackage{fancyvrb}
\usepackage{showframe}

\usepackage{xparse}
\ExplSyntaxOn
\box_new:N \l_fvrb_box
\tl_new:N \l_fvrb_tl

\RenewDocumentCommand \FancyVerbFormatLine { m }
 {
   \hbox_set:Nn \l_fvrb_box { #1 }
    \dim_compare:nNnTF { \box_wd:N \l_fvrb_box }>{ \linewidth }
      {%box to big 
       \fvrb_use_linecontents:n { #1 }
      } 
      {%box fits
       \box_use:N \l_fvrb_box
      }
 }

\cs_new:Npn \fvrb_use_linecontents:n  #1
 {
  \group_begin:
   \vbox_set:Nn \l_fvrb_box
     {\hsize=\linewidth\parindent0pt
       \advance\hsize by -2em
       \hspace*{-2em}
        #1
     }
    \hspace*{2em}\box_use:N \l_fvrb_box
  \group_end:
}

\ExplSyntaxOff

\begin{document}
\begin{Verbatim}
asdsadsadsa asd  a

asdsadsadsa asd  asd  asd sa sd sd as  sdadas sa+ dsa +sa++94+4+ +4sd+as 
\end{Verbatim}
\end{document}

相关内容