wenn ungerade gerade Zahl vom Datentool

wenn ungerade gerade Zahl vom Datentool

Thema folgentcolorbox: spezifische Breiten- und Höheneinstellungen für ungerade und gerade Seiten

minimaler Code:

\documentclass{article}
\usepackage{datatool}
\usepackage{filecontents}
\usepackage[strict]{changepage}

\begin{filecontents*}{test2.csv}
Acol, Bcol, NoCol
Ax,Bx,1
Ay,By,3
A1,B22,2
A2,B44,4
A3,B11,5
\end{filecontents*}

\DTLloaddb{mydata}{test2.csv}

\newcommand*{\pageDependent}{\ifoddpage 5cm\else 10cm\fi\relax}

\begin{document}

\DTLforeach*{mydata}{\A=Acol,\B=Bcol}%
{%
 \A \checkoddpage\hspace{\pageDependent} \B
 \newpage
}%

\end{document}

Wie kann ich ändern

\newcommand*{\pageDependent}{\ifoddpage 5cm\else 10cm\fi\relax}

Und \checkoddpage{\pageDependent}...

mit der neuen NoCol-Regel unten von Datatools:

  1. wenn Nocol = ungerade, \pageDependent = 5cm

  2. wenn Nocol = gerade, \pageDependent = 10cm

Danke

Antwort1

Ich schlage Folgendes vor:

\RequirePackage{filecontents}
\begin{filecontents*}{test2.csv}
Acol, Bcol, NoCol
Ax,Bx,1
Ay,By,3
A1,B22,2
A2,B44,4
A3,B11,5
\end{filecontents*}

\documentclass{article}
\usepackage{datatool}
\DTLloaddb{mydata}{test2.csv}

\makeatletter
\newcommand*{\valueDependent}[1]{%
  \ifodd #1
    \expandafter\@firstoftwo
  \else
    \expandafter\@secondoftwo
  \fi
}
\makeatother

\begin{document}

\DTLforeach*{mydata}{\A=Acol, \B=Bcol, \No=NoCol}%
{%
 \A
 \hspace{\valueDependent{\No}{5cm}{10cm}}%
 \B
 \par
}%

\end{document}

Bildschirmfoto

Dies funktioniert, weil:

  • \hspace{something}tut \hskip something\relax;

  • nach der Verarbeitung eines \hskipBefehls erweitert TeX die Token, bis ein 〈Kleber〉 vorhanden ist;

  • nach genügend Erweiterungen \valueDependentergibt mein Makro einen 〈Kleber〉, weil das TeX-Grundelement \ifoddauch Token erweitert, bis es eine 〈Zahl〉 hat (die durch definierten Spaltenmakros datatool, wie \Nohier, sind erweiterbar).

Falls Sie möchten, dass die beiden Längen darin fest codiert werden \valueDependent, können Sie Folgendes verwenden:

\RequirePackage{filecontents}
\begin{filecontents*}{test2.csv}
Acol, Bcol, NoCol
Ax,Bx,1
Ay,By,3
A1,B22,2
A2,B44,4
A3,B11,5
\end{filecontents*}

\documentclass{article}
\usepackage{datatool}
\DTLloaddb{mydata}{test2.csv}

\newcommand*{\valueDependent}[1]{%
  \ifodd #1 5cm \else 10cm \fi
}

\begin{document}

\DTLforeach*{mydata}{\A=Acol, \B=Bcol, \No=NoCol}%
{%
 \A
 \hspace{\valueDependent{\No}}%
 \B
 \par
}%

\end{document}

Die Ausgabe ist die gleiche wie im vorherigen Screenshot.

verwandte Informationen