
TikZ 행렬에서 최대 열 수를 설정하고 싶습니다. 최대 수에 도달했을 때 새 셀을 시작하면 LaTeX가 셀을 새 행에 넣습니다.
&
한 가지 접근 방식은 현재 열 번호를 확인하고 an 또는 a 로 대체할지 여부를 결정하는 명령입니다 \\
.
배경:
저는 다음과 같은 접착식 라벨 배열에 인쇄하기 위해 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
카운터를 사용하여 라벨 수를 계산할 수 있습니다. 각 레이블이 끝나면 카운터가 증가합니다. 카운터가 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
상자의 크기가 한 텍스트 줄에 맞게 조정됩니다.
\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}