这是在绘制晶体图时,我遇到了一个问题: ! \cmdGR@vertex@L 定义中的参数数量非法:我想使用tkz-graph
并标记一个有点复杂的东西:形式如下的图表
1 1
2
生成该图表的 LaTeX 代码示例:
{\def\lr#1{\multicolumn{1}{|@{\hspace{.6ex}}c@{\hspace{.6ex}}|}{\raisebox{-.3ex}{$#1$}}}\raisebox{-.6ex}
{$\begin{array}[b]{*{2}c}\cline{1-2}\lr{1}&\lr{1}\\\cline{1-2}\lr{2}\\\cline{1-1}\end{array}$}}
如果我按照下面引用的方式使用它,我就会收到如所引用的问题中所述的错误:
! Illegal parameter number in definition of \cmdGR@vertex@L.
<to be read again>
1
l.51 ...end{array}$}}$},x=5cm,y=1cm]{v0}
正如所引用的问题中所述,这个问题出现在 Sage 的代码中,特别是 Sage 的一个错误,我想通过改进 LaTeX 代码来修复这个错误。上面的“示例”代码是 Sage 目前使用的,所以我想替换它。
产生错误的示例文件,如果删除有问题的tikzpicture
,您可以看到顶点标签应该是什么样的:
\documentclass{article}
\usepackage{tikz}
\usepackage{tkz-graph}
\begin{document}
\begin{tikzpicture}
%
\Vertex[L=\hbox{${\def\lr#1{\multicolumn{1}{|@{\hspace{.6ex}}c@{\hspace{.6ex}}|}{\raisebox{-.3ex}{$#1$}}}\raisebox{-.6ex}{$\begin{array}[b]{*{2}c}\cline{1-2}
\lr{1}&\lr{1}\\\cline{1-2}\lr{2}\\\cline{1-1}\end{array}$}}$},x=5cm,y=1cm]{v0}
%
\end{tikzpicture}
The desired vertex label:
\[
\hbox{${\def\lr#1{\multicolumn{1}{|@{\hspace{.6ex}}c@{\hspace{.6ex}}|}{\raisebox{-.3ex}{$#1$}}}\raisebox{-.6ex}
{$\begin{array}[b]{*{2}c}\cline{1-2}\lr{1}&\lr{1}\\\cline{1-2}\lr{2}\\\cline{1-1}\end{array}$}}$}
\]
\end{document}
答案1
问题是在哪里lr
定义。它需要定义外部命令\Vertex
。在那里,您不能使用\multicolumn{...}{...}{...}
。有多种方法可以解决这个问题:
- 最简洁的方法:不使用
multicolumn
,而是使用数组参数中的垂直线{*n{|c}|}
,其中n
是数组中的列数。此外,\lr{...}
将是多余的,但它存在,以防您想要自定义每个单元格的外观
\documentclass{article}
\usepackage{tkz-graph}
\begin{document}
\begin{tikzpicture}[VertexStyle/.append style={draw=none, fill=none}]
\def\lr#1{#1}
\Vertex[L=
$\begin{array}{*2{|c}|}\cline{1-2}
\lr{A}&\lr{B}\\\cline{1-2}
\lr{C}\\\cline{1-1}
\end{array}$
,x=5cm,y=1cm]{v0}
\end{tikzpicture}
\end{document}
- 第二种方法与第一种方法类似,但包含一些其他命令
\documentclass{article}
\usepackage{tkz-graph}
\begin{document}
\begin{tikzpicture}[VertexStyle/.append style={draw=none, fill=none}]
\def\lr#1{#1}
\Vertex[L=
\hbox{
${
\raisebox{-.6ex}{
$\begin{array}[b]{*{2}{|c}|}\cline{1-2}
\lr{1}&\lr{1}\\\cline{1-2}
\lr{2}\\\cline{1-1}
\end{array}
$}}$
},x=5cm,y=1cm]{v0}
%
\end{tikzpicture}
\end{document}
- 奖金:第一种方法的更紧凑版本
\documentclass{article}
\usepackage{tkz-graph}
\newcommand{\myVertex}[5]{%
\Vertex[L=$\begin{array}{*#2{|c}|}#1\end{array}$,x=#3,y=#4]{#5}%
}
\begin{document}
\begin{tikzpicture}[VertexStyle/.append style={draw=blue, fill=none}]
\myVertex{
\cline{1-3}
A&B&C\\\cline{1-3}
D&E\\\cline{1-2}
F\\\cline{1-1}
}{3}{1cm}{1cm}{v0}
\myVertex{
\cline{1-3}
1&2&3\\\cline{1-3}
4&5\\\cline{1-2}
6\\\cline{1-1}
}{3}{3cm}{1cm}{v1}
\end{tikzpicture}
\end{document}
原始答案:
\documentclass{article}
\usepackage{tkz-graph}
\begin{document}
\begin{tikzpicture}
\def\lr#1{#1}%keep it aligned with the code generated and for cell customization
%
\tikzset{VertexStyle/.append style={draw=none}}
\Vertex[L=\hbox{
$
\begin{array}{|c|c|}\cline{1-2}
\lr{1}&\lr{1}\\\cline{1-2}
\lr{2}\\\cline{1-1}
\end{array}
$}
,x=5cm,y=1cm]{v0}
%
\end{tikzpicture}
\end{document}