我有一个CSV列出土耳其姓名和年龄。
- 我想按字母顺序升序排列。但是,土耳其字符似乎破坏了排序。
- 另一个问题是,如果可能的话,如何为列表插入行号。
另外,我使用土耳其字符(çğıöşü)CSV文件,我得到了错误,这就是为什么我不得不使用乳胶代码中的CSV文件。
\documentclass[12pt,a4paper]{article}
\usepackage{booktabs}
\usepackage{datatool}
\usepackage{filecontents}
\usepackage[showframe,margin=40mm]{geometry}
\usepackage{longtable}
\begin{filecontents*}{data.csv}
Name,Age
\c{S}eng\"{u}l,17
\c{C}etin,32
H\"{u}seyin,23
B\"{u}lent,41
Ay\c{s}e,27
Ba\c{s}ak,37
\end{filecontents*}
\pagestyle{empty}
\DTLloaddb[keys={Name,Age}]{data}{data.csv}
\DTLsort{Name=ascending}{data}
\begin{document}
\textbf{Turkish Alphabet}: abc\c{c}defgh{\i}ijklmno\"{o}prs\c{s}tu\"{u}vyz
{\tiny
\noindent
\begin{longtable}{ll}
\toprule
\bfseries Name &
\bfseries Age \\
\midrule
\DTLforeach{data}{%
\pname=Name,\pAge=Age}{%
\pname & \pAge \\
}
\\[-\normalbaselineskip] \bottomrule
\end{longtable}
}
\end{document}
答案1
提供的比较处理程序datatool
仅执行字符代码比较。TeX 不提供与一般语言环境相关数据(例如 Unicode 通用语言环境数据存储库)的便捷接口。相反,您需要使用可以访问此类信息的外部工具对数据进行预处理。
这datatooltk
应用程序提供了一种根据特定区域进行排序并将数据保存为可通过包快速输入的格式的\DTLloaddbtex
方法datatool
。
例如,使用data.csv
(UTF-8):
Name,Age
Şengül,17
Çetin,32
Hüseyin,23
Bülent,41
Ayşe,27
Başak,37
data.dbtex
然后可以使用以下命令创建文件:
datatooltk --csv-encoding UTF-8 --tex-encoding UTF-8 --sort Name --sort-locale tr --csv data.csv --output data.dbtex
这将从 CSV 文件导入数据,根据Name
语言标记tr
(土耳其语)标识的区域设置根据字段进行排序,并将排序后的数据保存到文件中data.dbtex
,现在可以将其加载到文档中:
\documentclass[12pt,a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{booktabs}
\usepackage{datatool}
\usepackage{filecontents}
\usepackage[showframe,margin=40mm]{geometry}
\usepackage{longtable}
\pagestyle{empty}
\DTLloaddbtex{\mydata}{data.dbtex}
\begin{document}
\textbf{Turkish Alphabet}: abc\c{c}defgh{\i}ijklmno\"{o}prs\c{s}tu\"{u}vyz
{\tiny
\noindent
\begin{longtable}{ll}
\toprule
\bfseries Name &
\bfseries Age \\
\midrule
\DTLforeach{\mydata}{%
\pname=Name,\pAge=Age}{%
\pname & \pAge \\
}
\\[-\normalbaselineskip] \bottomrule
\end{longtable}
}
\end{document}
仅当数据发生变化时才需要重建文件data.dbtex
。这具有加快文档构建速度的附加好处。
您可以在 的 GUI 模式中设置--csv-encoding
、--tex-encoding
和等选项的默认值。--sort-locale
datatooltk