关注主题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}
...
使用 Datatools 的以下新 NoCol 规则:
如果 Nocol = 奇数,则 \pageDependent = 5cm
如果 Nocol = 偶数,则 \pageDependent = 10cm
谢谢
答案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 会扩展标记,直到它有一个 〈glue〉;经过足够的扩展后,我的
\valueDependent
宏会产生一个 〈glue〉,因为 TeX 原语\ifodd
也会扩展标记,直到它有一个 〈number〉(由 定义的列宏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}
输出与上一个屏幕截图相同。