
關注主題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}
輸出與上一個螢幕截圖中的相同。