与 Datatool 和 babel 的冲突(法语)

与 Datatool 和 babel 的冲突(法语)

我在使用 datatool 中的外部 CSV 文件和使用 babel 包中的法语编译乳胶文档时遇到了麻烦。

我的乳胶文件的内容是:

\documentclass[letterpaper,12pt]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8x]{inputenc}
\usepackage[francais]{babel}
\usepackage{longtable}
\usepackage{datatool}

\begin{document}

\DTLsetseparator{;}
\DTLloaddb{tableBesoins}{babel_datatool_conflict.csv}
\begin{longtable}{| p{0.9in} | p{0.6in} | p{1.6in} | p{1.2in} | p{1.6in} | }
   \caption{Besoins\label{tbl:besoins}}\\
   Besoin & Priorité & Préoccupations & Solution actuelle & Solution proposée%
   \DTLforeach{tableBesoins}{%
   \besoin=Besoin,\priority=Priorite,\preoccupation=Preoccupations,%
   \currentsolution=Solution actuelle,\newsolution=Solution proposee}{%
   \\
   \besoin & \priority & \preoccupation & \currentsolution & \newsolution}
\end{longtable}

\end{document}

babel_datatool_conflict.csv文件的内容如下:

http://pastebin.com/6nv6v9SH

我收到的错误是:

(/usr/share/texmf-texlive/tex/generic/babel/frenchb.cfg)))
(/usr/share/texmf-texlive/tex/latex/carlisle/scalefnt.sty)
(./babel_datatool_conflict.aux)
(/usr/share/texmf-texlive/tex/latex/ucs/ucsencs.def)
! Use of \@dtl@lopoff doesn't match its definition.
\@dtl@lin@ ->;
              "Besoin";"Priorite";"Preoccupations";"Solution actuelle";"Solu...
l.13 ...tableBesoins}{babel_datatool_conflict.csv}

! Missing $ inserted.
<inserted text> 
                $
l.13 ...tableBesoins}{babel_datatool_conflict.csv}

! Undefined control sequence.

我已将完整的错误上传至此处:

http://pastebin.com/uZEANpd4

我尝试将 [francais] 改为 [french] 或 [frenchb],使用 [utf8] 而不是 [utf8x],更改包的顺序。除非我注释掉 usepackage babel 行,否则它不会编译。

答案1

当使用babel带有该french选项的包时,分号(以及冒号、感叹号和问号)将被激活,因此这些标点符号周围的间距可以根据法语风格在符号前后留空格进行纠正:

“正常”间距:

法语间距:

如果您在数据文件中使用分号作为字段分隔符,则必须在命令\shorthandoff{;}前暂时使分号无效\DTLloaddb,然后使用 再次使分号有效\shorthandon{;}

相关内容