长表(禁忌)单元内的 \discretionary 问题

长表(禁忌)单元内的 \discretionary 问题

我正在将代码嵌入到代码文档中,这里还需要在表格单元格中包含代码。我有以下(精简的)代码(基于@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,但在这里/现在我什么也找不到。

相关内容