导入 csv 文件:如何合并不同行的信息?

导入 csv 文件:如何合并不同行的信息?

我正在尝试从导出为 csv 的电子表格文件编译双语词典。该文件包含人们期望从词典中获得的信息类型的列:词素、词性、性别、意义、例句、示例翻译。我在这里简化了一些内容以便更好地解释。

lexeme,partofspeech,gender,sense,example,extranslation

对于我的 tex 文件我使用\新命令创建一个\入口命令带有六个参数。这样,​​我可以定义格式(括号、斜体、标题等)。

\newcommand{\entry}[6]{\markboth{#1}{#1}{\textbf{#1}}\ {\textcolor{blue}{(#2)}}\ {#3}\ $\bullet$\ {#4} \ {\textit{#5}} {#6}\vspace{0.2cm}\par}

在文档中,我调用\入口导入 csv 文件时。我使用 csvsimple 包导入我的 csv 文件。以下\csvreader:{第一个参数} 标识 csv 文件,{第二个参数} 定义我的表格标题,{第三个参数} 包含\入口应用于 csv 中每一行的命令。

\csvreader{dictionary.csv}{lexeme=\lexeme,partofspeech=\partofspeech,gender=\gender,sense=\sense,example=\example,extranslation=\extranslation}{\entry{\lexeme}{\partofspeech}{\gender}{\sense}{\example}{\extranslation}}

对于如下所示的 csv 文件来说,所有这些都可以正常工作:

lexeme,partofspeech,gender,sense,example,extranslation
lexeme-1,noun,feminine,translation-1,example-1,extranslation-1
lexeme-2,noun,masculine,translation-2,example-2,extranslation-2

但是,有些词素/词条包含多个例句。它们看起来像这样:

lexeme,partofspeech,gender,sense,example,extranslation
lexeme-1,noun,feminine,translation-1,example-1a,extranslation-1a
,,,,example-1b,extranslation-1b

此外,有些词素/词条有多种含义,它们看起来像这样:

lexeme,partofspeech,gender,sense,example,extranslation
lexeme-1,noun,feminine,translation-1a,example-1a,extranslation-1a
,verb,,translation-1b,example-1b,translation-1b,

随着\csvreader设置(见上文),我遇到了问题。正如人们所料,我为每一行新添加一个新条目,而实际上我只需添加一个属于上一行中的词素/条目的示例/翻译。这对于第一个值为空(即没有词素)的所有行都相关。我该怎么做?

编辑:我被要求提供 MWE

\documentclass[11pt,a4paper,twoside]{article}
\usepackage{fontspec}
\usepackage{csvsimple}
\usepackage{color}
\newcommand{\entry}[6]{\markboth{#1}{#1}{\textbf{#1}}\ {\textcolor{blue}{(#2)}}\ {#3}\ $\bullet$\ {#4} \ {\textit{#5}} {#6}\vspace{0.2cm}\par}
\begin{document}
    \csvreader{dictionary.csv}{lexeme=\lexeme,partofspeech=\partofspeech,gender=\gender,sense=\sense,example=\example,extranslation=\extranslation}{\entry{\lexeme}{\partofspeech}{\gender}{\sense}{\example}{\extranslation}}
\end{document}

csv 文件如下所示:

lexeme,partofspeech,gender,sense,example,extranslation
lexeme-1,noun,feminine,translation-1a,example-1a,extranslation-1a
,verb,,translation-1b,example-1b,translation-1b
lexeme-2,noun,feminine,translation-2,example-2a,extranslation-2a
,,,,example-2b,extranslation-2b

MWE 的 pdf 输出包含四个字典条目。我想要实现的是将 csv 文件中的第二行和第四行附加到前一行的相应单元格(即同一列)。

答案1

您可以测试所需的设置,并且仅在真正新的条目开始时开始新段落。 在此处输入图片描述

\documentclass[11pt,a4paper,twoside]{article}
\usepackage{fontspec}
\usepackage{csvsimple}
\usepackage{color}
\newcommand{\entry}[6]{%
\if$#1$\else\markboth{#1}{#1}\par\textbf{#1}\ {\textcolor{blue}{(#2)}}\ {#3}\ $\bullet$\ {#4} \fi
\ \textit{#5} {#6}%
}
\begin{document}
\setlength\parskip{.5ex}
    \csvreader{dictionary.csv}{
lexeme=\lexeme,
partofspeech=\partofspeech,
gender=\gender,sense=\sense,
example=\example,
extranslation=\extranslation}{%
\entry{\lexeme}{\partofspeech}{\gender}{\sense}{\example}{\extranslation}}
\end{document}

相关内容