
トピックをフォロー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
は展開可能です)。
2 つの長さを内部でハードコードしたい場合は\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}
出力は前のスクリーンショットと同じです。