Bonjour à tous.
Je suis en train d’essayer de faire un code latex qui lirait plusieurs fichiers csv pour faire une mise en page comme demandé dans un stage. La plupart des commandes que j’ai faites pour ça fonctionnent très bien mais je me heurte à un soucis: La commande \csvreader
du paquet csvsimple
ne semble pas supporter l’usage imbriqué.
Voilà les deux commandes incriminées:
%Appel principal
\useCaseCsv{fichier1.csv}{fichier2.csv}{pipe}{false}
%La commande useCaseCsv
\newcommand{\useCaseCsv}[4] % Template for a Use-Case csv file
% Parameter order: use-case’s csv; requirement’s csv ; separator; header
%Value for separator: comma; semicolon; pipe; tab
%Value for header: true; false
%The order of the use-case’s csv should be: reference; version; name; complexity; priority; description; actors
%The order of the requirement’s csv should be: reference; version; test method; description ; parent; justification ; type of connection with the use-case
%The type of connection can have the value: Precondition; MainFlow; AlternativeFlow; Postcondition
%The csv must be ordered
{{
\csvreader[separator=#3,head=#4,respect all]{#1}{1=\refe,2=\ver,3=\name,4=\comp,5=\prio,6=\desc,7=\actor}
{\useCase{\refe}{\ver}{\name}{\comp}{\prio}{\desc}{\actor}{#2}{#3}
}}
%La commande useCase:
\newcommand{\useCase}[9] % Template for a use-case
% Parameter order: reference; version; name; complexity; priority; description; actors; requirement’s csv; separator
%Value for separator: comma; semicolon; pipe; tab
%The order of the .csv should be: reference; version; test method; description ; parent; justification ; type of connection with the use-case
%The type of connection can have the value: Precondition; MainFlow; AlternativeFlow; Postcondition
%The csv must be ordered
{{
\newline#1\_V#2~#3
\newline\textbf{Complexity:}~#4\hfill\textbf{Priority:}~#5
\newline
\newline\textbf{GlobalDescription:}~#6
\newline
\newline\textbf{Actor:}\{~#7\}
\newline
\newline\textbf{Precondition:}~
\newline\csvreader[separator=#9,head=false,respect all,filter expr={
test{\IfSubStr{\refe}{#1}} and
test{\ifcsvstrcmp{\type}{Precondition}}
}]{#8}
{1=\refe,2=\ver,3=\test,4=\desc,5=\hl,6=\justi,7=\type}
{\requirement{\StrBehind{\refe}{#1}}{\ver}{\test}{\desc}{\hl}{\justi}}
\newline\newline\textbf{Main Flow:}~
\newline\csvreader[separator=#9,head=false,respect all,filter expr={
test{\IfSubStr{\refe}{#1}} and
test{\ifcsvstrcmp{\type}{MainFlow}}
}]{#8}
{1=\refe,2=\ver,3=\test,4=\desc,5=\hl,6=\justi,7=\type}
{\requirement{\StrBehind{\refe}{#1}}{\ver}{\test}{\desc}{\hl}{\justi}}
\newline\newline\textbf{Alternative Flow:}~
\newline\csvreader[separator=#9,head=false,respect all,filter expr={
test{\IfSubStr{\refe}{#1}} and
test{\ifcsvstrcmp{\type}{AlternativeFlow}}
}]{#8}
{1=\refe,2=\ver,3=\test,4=\desc,5=\hl,6=\justi,7=\type}
{\requirement{\StrBehind{\refe}{#1}}{\ver}{\test}{\desc}{\hl}{\justi}}
\newline\newline\textbf{Postcondition:}~
\newline\csvreader[separator=#9,head=false,respect all,filter expr={
test{\IfSubStr{\refe}{#1}} and
test{\ifcsvstrcmp{\type}{Postcondition}}
}]{#8}
{1=\refe,2=\ver,3=\test,4=\desc,5=\hl,6=\justi,7=\type}
{\requirement{\StrBehind{\refe}{#1}}{\ver}{\test}{\desc}{\hl}{\justi}}
}}
Au départ, je pensais qu’il suffirait de sauveagerder le compteur de lignes pour le remettre après, mais ça ne fonctionne pas. Il semble que tout soit redéfini et que la commande de usecaseCsv
ne soit exécutée que sur la premère ligne du fichier 1 (et donc une première fois sur toutes du fichier 2).
Auriez-vous une idée de coment faire pour contourner ce problème?
Merci pour votre aide!