si es un número par e impar de la herramienta de datos

si es un número par e impar de la herramienta de datos

seguir tematcolorbox: configuraciones específicas de ancho y alto para páginas pares e impares

código mínimo:

\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}

¿Cómo puedo cambiar?

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

y \checkoddpage{\pageDependent}...

con la nueva regla siguiente de NoCol de Datatools:

  1. si Nocol = impar, \pageDependent = 5cm

  2. si Nocol = par, \pageDependent = 10cm

Gracias

Respuesta1

Propongo lo siguiente:

\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}

captura de pantalla

Esto funciona porque:

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

  • después de digerir un \hskipcomando, TeX expande los tokens hasta que tiene un "pegamento";

  • después de suficientes expansiones, mi \valueDependentmacro produce un 〈pegamento〉, porque la primitiva TeX \ifoddtambién expande los tokens hasta que tiene un 〈número〉 (las macros de columna definidas por datatool, como \Noaquí, son expandibles).

En caso de que desee que las dos longitudes estén codificadas dentro \valueDependent, puede usar:

\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}

El resultado es el mismo que en la captura de pantalla anterior.

información relacionada