我正在研究这个代码
\documentclass[a4paper]{standalone}
\usepackage{amssymb,tikz}
\usetikzlibrary{positioning, calc}
\begin{document}
\newcounter{compteur}
\setcounter{compteur}{1}
\newcounter{lettres}
\setcounter{lettres}{1}
\begin{tikzpicture}
\node[matrix, inner sep=0](truc){
\node[anchor=west, inner sep=0](question){Question~\thecompteur};
\addtocounter{compteur}{1}
\node[right=of question](carre\thelettres){$\square$};
\node[above =\baselineskip of carre\thelettres]{\Alph{lettres}};
\stepcounter{lettres}
\foreach\x [evaluate = \x as \y using int(\x+1)] in {1,...,4}{
\node[right=of carre\x](carre\y){$\square$};
\node[above =\baselineskip of carre\thelettres]{\Alph{lettres}};
\stepcounter{lettres}
}
\foreach\a in{2,...,15}{
\node[anchor=east, below=\baselineskip of question, inner sep=0](question){Question~\thecompteur};
\foreach\b in {1,...,5}{
\path let \p1=(question), \p2=(carre\b) in node at (\x2,\y1){$\square$};
}
\addtocounter{compteur}{1}
}
\\
};
\end{tikzpicture}
\end{document}
编译后为:
我的问题是,我想要将几个这种类型的表格并列,就像另一个 6 行/2 列矩阵的一些元素一样,其中第 1 行/第 2 列的表格元素的第一个问题标记为“问题 16”,依此类推。
简单的代码能解决这个问题吗?
答案1
重复使用样本的第一步始终是创建包含该样本的宏。 就您而言,这些宏需要完成三件事:
- 可调整第一个问题的数量(以防您不想在每种情况下继续计数)
- 问题数量不定
- 盒子数量可变
所以我做了以下事情:
\documentclass{standalone}
\usepackage{amssymb,tikz}
\usetikzlibrary{positioning}
\newcounter{question}
\setcounter{question}{1}
\newcounter{letter}
\tikzstyle{my question} = []
\tikzstyle{my box} = []
\tikzstyle{my heading} = []
% usage: \createtable[first question number]{number of questions}{number of letters}
\newcommand{\createtable}[3][\value{question}]{
\setcounter{question}{#1} % do nothing by default
\setcounter{letter}{1}
\begin{tikzpicture}
\node[my heading] (tmp1) {\Alph{letter}};
\ifnum#3>1
\foreach \current [evaluate = \current as \last using int(\current-1)] in {2,...,#3} {
\stepcounter{letter}
\node[my box, right=of tmp\last] (tmp\current) {\Alph{letter}};
}
\fi
% \coordinate (upper right) at (tmp#3.north east);
\foreach \y in {1,...,#2} {
\node[my box, below=\baselineskip of tmp1] (tmp1) {$ \square $};
\node[my question, left= of tmp1] (q\y) {Question~\arabic{question}};
\stepcounter{question}
\ifnum#3>1
\foreach \x in {2,...,#3} {
\node[my box, below=\baselineskip of tmp\x] (tmp\x) {$ \square $};
}
\fi
}
% \coordinate (lower left) at (q#2.south west);
% \useasboundingbox (upper right) rectangle (lower left);
\end{tikzpicture}
}
\begin{document}
\createtable{5}{2}
\createtable{2}{3}
\end{document}
这导致:
你需要这个matrix
做什么?据我所知,不可能把这个放在&
里面\foreach
,所以在我看来,你根本没有从中得到任何好处。如果你需要它作为边界框或类似的东西,请查看上面代码中的注释。