我正在将代码嵌入到代码文档中,这里还需要在表格单元格中包含代码。我有以下(精简的)代码(基于@jfbu 的出色回答遵守空格但不遵守行尾):
\documentclass[twoside]{book}
\usepackage{ifthen}
\usepackage{longtable}
\usepackage{tabu}
\usepackage{hanging}
\newenvironment{MyParams}[2][]{%
\tabulinesep=1mm%
\par%
\begin{longtabu*}spread 0pt [l]{|X[-1,l]|X[-1,l]|}
}{%
\end{longtabu*}%
\vspace{6pt}%
}
\newlength{\MyCodeWidth}
\newcommand\NiceSpace{%
\discretionary{}{\kern\fontdimen2\font}{\kern\fontdimen2\font}%
}
\newcommand\MyCodeLine[1]{\hangpara{\MyCodeWidth}{1}{#1}\par}
\newenvironment{MyCode}{%
\par%
\rightskip0pt plus 1fil%
\settowidth{\MyCodeWidth}{000000}%
\setlength{\parskip}{0ex plus 0ex minus 0ex}%
{\lccode`~32 \lowercase{\global\let~}\NiceSpace}\obeyspaces%
}{%
}
\begin{document}
\begin{MyParams}{Parameters}
\begin{MyCode}
\MyCodeLine{Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam commodo mattis orci, id gravida leo dignissim condimentum.}
\end{MyCode}
\end{MyParams}
\end{document}
现在我收到错误信息:
! Missing \endcsname inserted.
<to be read again>
\discretionary
l.38 \end{MyParams}
所以我显然错过了一些东西,仍然在苦苦挣扎……,但我不知道该去哪里找。如果在和之间出现问题tabu
,手册verbatim
中会给出一条消息tabu
,但在这里/现在我什么也找不到。