
следить за темойtcolorbox: особые настройки ширины и высоты для четных и нечетных страниц
минимальный код:
\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}
Как я могу изменить
\newcommand*{\pageDependent}{\ifoddpage 5cm\else 10cm\fi\relax}
и \checkoddpage{\pageDependent}
...
с новым правилом NoCol для Datatools:
если Nocol = нечетное, \pageDependent = 5см
если Nocol = четный, \pageDependent = 10 см
Спасибо
решение1
Я предлагаю следующее:
\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}
Это работает, потому что:
\hspace{something}
делает\hskip something\relax
;после обработки
\hskip
команды TeX расширяет токены до тех пор, пока не получится «связующее звено»;после достаточного количества расширений мой
\valueDependent
макрос выдает 〈клей〉, поскольку примитив TeX\ifodd
также расширяет токены до тех пор, пока не получит 〈число〉 (макросы столбцов, определенные с помощьюdatatool
, такие как\No
здесь, являются расширяемыми).
Если вы хотите, чтобы две длины были жестко закодированы внутри \valueDependent
, вы можете использовать:
\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}
Результат такой же, как на предыдущем снимке экрана.