原始答案:

原始答案:

这是在绘制晶体图时,我遇到了一个问题: ! \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}

相关内容