我在使用 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文件的内容如下:
我收到的错误是:
(/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.
我已将完整的错误上传至此处:
我尝试将 [francais] 改为 [french] 或 [frenchb],使用 [utf8] 而不是 [utf8x],更改包的顺序。除非我注释掉 usepackage babel 行,否则它不会编译。
答案1
当使用babel
带有该french
选项的包时,分号(以及冒号、感叹号和问号)将被激活,因此这些标点符号周围的间距可以根据法语风格在符号前后留空格进行纠正:
“正常”间距:
法语间距:
如果您在数据文件中使用分号作为字段分隔符,则必须在命令\shorthandoff{;}
前暂时使分号无效\DTLloaddb
,然后使用 再次使分号有效\shorthandon{;}
。