
TikZ マトリックスの最大列数を設定し、最大数に達したときに新しいセルを開始すると、LaTeX によってそのセルが新しい行に配置されるようにしたいと考えています。
&
1 つのアプローチは、現在の列番号をチェックし、または のどちらに置き換えるかを決定するコマンドです\\
。
背景:
私は次のようなさまざまな粘着ラベルに印刷するための PDF を作成しています。
\\
ラベルを作成するとき、現在の行がいっぱいの場合は の代わりにを挿入する必要があり、これは便利ではありません。ファイルを変更したい場合 (つまり、項目を削除する場合) があり、改行を正しくするために&
後続の項目をすべて移動する必要があります。\\
アップデート:
より詳しい説明を提供するために、ここにコードを投稿します。要素のすべての位置を自分の制御下に置きたいので、マトリックスを紙の端に対して固定しました。プリンターによるオフセットがない場合、次のコードによって生成される境界ボックスは、紙のプレカットの継ぎ目と一致します。
\documentclass[a4paper]{article}
\usepackage{qrcode}
\usepackage{tikz}
\usepackage{hyperref}
\usepackage{xifthen} % provides \isempty test
\usepackage{pst-barcode}
\usetikzlibrary{positioning}
\pagestyle{empty}
\newcommand{\Label}[2][]{
\draw (0cm,0cm) rectangle (3cm,-4cm) node (framesoutheast) {};
\path (0cm,0cm) -- node[midway,anchor=north,inner sep=0pt,yshift=-4mm] (qrcode) {
\begin{pspicture}(0.9in,0.9in)
\psbarcode{https://wiki.thu-skyworks.org/#2}{width=0.9 height=0.9}{qrcode}
\end{pspicture}
%\qrcode[2cm]{https://wiki.thu-skyworks.org/#2}
%\XeTeXinputencoding "utf8"
}(3cm,0cm);
\node[anchor=south west,inner sep=1mm,outer sep=0pt] (logo) at (0mm,-40mm) {\includegraphics[width=9mm]{any_square_image}};
\path (logo.east) -- node[anchor=center,text width=19mm,align=center,font=\sffamily\small]{\ifthenelse{\isempty{#1}}{#2}{#1}}
(logo.east-|framesoutheast);
}
\begin{document}
\begin{tikzpicture}[remember picture,overlay]
\matrix[row sep={4cm,between origins}, column sep = {32mm,between origins},matrix anchor=north west,inner sep=0pt,xshift=10mm,yshift=-8mm] at (current page.north west) {
%\XeTeXinputencoding "byte"
\Label{Label\ one} & \Label[If need\\manual break]{If\ need\ manual\ break} & \Label{Label\ 3} &
\Label{Label 4} & \Label{Label 5} & \Label{Label 6} \\ % I want to make this line break auto
\Label{Label 7} \\
};
\end{tikzpicture}
\end{document}
答え1
カウンターを使用してラベルをカウントできます。ラベルを 1 つカウントするごとにカウンターを増分します。カウンターが 6 の場合は を挿入して\\
カウンターをリセットし、それ以外の場合は を挿入します(または、マトリックス内の の&
定義、つまり)。&
\pgfmatrixnextcell
\newcounter{colnr}
\setcounter{colnr}{0}
\newcommand{\lb}{%
\stepcounter{colnr}%
\ifthenelse{\value{colnr}=6}{\setcounter{colnr}{0}\\}{\pgfmatrixnextcell}%
}
最後の を除く、行列内のすべての&
とを に置き換えます。\\
\lb
\\
答え2
マトリックスの代わりに、からの構築をTiKZ
使用できます。値を定義し、すべての要素をリストします。はそれらを分配し、必要に応じて行とページを分割します。tcbraster
tcolorbox
raster columns
tcbraster
次のコードは、それを宣言する方法を示しています。オプションはraster force size=false
内部ボックスのサイズを保持し、それ以外の場合は内部raster columns
ボックスが 1 つのテキスト行に収まるように拡大縮小されます。
\documentclass{article}
\usepackage[most]{tcolorbox}
\usepackage[hmargin={1cm,1cm},vmargin={1cm,1cm}]{geometry}
\begin{document}
\begin{tcbraster}[raster columns=6, raster every box/.style={blankest, width=3cm}, raster force size=false]
\foreach \i in {1,...,20}{%
\tcbincludegraphics{example-image}
\tcbincludegraphics{example-image-A}
\tcbincludegraphics{example-image-B}
\tcbincludegraphics{example-image-C}
}
\end{tcbraster}
\end{document}