数据库导出时出现换行符,在表中显示为多余的行

数据库导出时出现换行符,在表中显示为多余的行

我正在使用具有多种不同类型字段的 Access 数据库自动生成 tex 文件。其中一个是备忘录字段,它将包含一个逐项列表,即可见的 tex,包括\begin{itemize} \item line data \end{itemize},最好使用换行符保持整洁。当我输入行并使用适当的 Ctrl + Enter 在 Access 字段中强制换行时,一切看起来都很好。

\begin{itemize}
    \item Line 1 
    \item Line 2 
    \item Line 3
\end{itemize}

然后我有一个脚本连接到数据库中的查询,该查询将一大串文本和备忘录字段连接在一起,并将完整的列保存到 tex 文件中。不幸的是,这充满了额外的换行符,即

\begin{itemize}

    \item Line 1 

    \item Line 2 

    \item Line 3

\end{itemize}

所有这些额外的行都不是故意的,并导致par我的XeLaTeX编译出现结束错误(尽管我不认为这是 TeX 引擎的不足)。

所以对我来说,这个换行符似乎没有按照我的想法做,但由于这个特殊字符在后台工作,我不太确定它在做什么,以及如何在两种情况下都得到一个换行符。

我认为最干净的解决方案是在生成此 tex 文件的数据库中使用更合适的回车符,但如果这些换行符导致失败是 TeX 原因造成的,我很想了解更多信息并适当地更新我的问题/ MWE。

注意:此逐项列表实际上作为参数 8 传递给如下定义的新命令(这可能是它实际上对数据库中使用的换行符更敏感的原因):

\ExplSyntaxOn
\DeclareDocumentCommand{\WCBlock}{ O{} O{} O{} O{} O{} O{} m O{} }{%
    \begin{ThreePartTable}%
        \begin{TableNotes}[para,flushleft]%
        \end{TableNotes}%
        \renewcommand\multirowsetup{\raggedleft}
        \begin{longtable}[l]{R{2cm}|L{10.75cm} R{2cm}}%
            \tl_if_blank:nF{#1}{ \multirow{3}{2cm}{#1\\#2\\#6 } & \textbf{#3} & \multirow{2}{2cm}{#5} \\}%
            \tl_if_blank:nF{#4}{ & \emph{#4} &  \\}%
                                 & \multicolumn{2}{L{12cm}}{#7}     \\%
            \tl_if_blank:nF{#8}{ & \multicolumn{2}{L{12cm}}{#8}     \\}%
        \insertTableNotes%
        \end{longtable}%
    \end{ThreePartTable}%
}
\ExplSyntaxOff

答案1

默认情况下,传递给由 定义的命令\NewDocumentCommand(应该优先于\DeclareDocumentCommand)的参数是短的,也就是说,它们不应该包含\par(或者空行,这是一样的)。

你可以提出任何论点长的通过在参数说明符前加上前缀+:

\NewDocumentCommand{\WCBlock}{ O{} O{} O{} O{} O{} O{} m +O{} }
 {
  ...
 }

就是您所需要的。请注意,可以省略 以保护和%之间的代码的行尾。\ExplSyntaxOn\ExplSyntaxOff

无关,但我不确定您是否应该使用七个可选参数:对我来说,它们看起来是强制性的。

相关内容