tikz矩阵或宏中的数字字体大小

tikz矩阵或宏中的数字字体大小

在 tikz 矩阵中,我尝试设置row height相对字体大小,但为此我需要将其设置为数值而不是名称,例如\normalsize \large... 所以我使用\fontsize,但到目前为止,我只能通过宏使用它,因为我需要首先,\setlength{\x}{#1}其中\x is used like this\fontsize{\x}{\x}。但在\matrix ...如何运行\setlength{\x}{#1}之前 font=\fontsize{...}{...}?我的 mwe 是...

\documentclass[a4paper]{article}

\usepackage[verbose,vmargin=30mm,hmargin=20mm]{geometry}

\usepackage{tikz}
\usetikzlibrary{matrix,calc}

\tikzset{
  allmatrix/.style = {matrix of nodes, nodes in empty cells,matrix anchor=north,
                    row sep=-\pgflinewidth, column sep=-\pgflinewidth},
  texttable/.style 2 args={nodes={anchor=center,outer sep=0pt,inner sep=3pt,
        text width=#1,text depth=.5ex,text height=#2, font=\fontsize{#2}{#2}}}}

\setlength{\parindent}{0pt}

\begin{document}
\begin{tikzpicture}

\matrix at (0,0) [allmatrix,texttable={60mm}{10pt}] (t1) {
firt line\\
second line\\
}
\end{tikzpicture}
\end{document}

能够使用 \fontsize 的宏是(超出 tikz 范围)...

\newlength\x
\newcommand{\setnumfon}[1]{\setlength\x{#1}\fontsize{\x}{\x}\selectfont}

我不知道如何在设置 font=\fontsize{\x}{\x} 之前在 tikz 宏中运行 \setlength

编辑:通常我们在 tikz 矩阵中设置minimum height=和而不是text height。这允许自动调整行高,但实际上它也存在跨列的严重文本对齐问题。我曾经就此问题发布过一些内容,并使用text height和提供了我自己的解决方案text depth。在所有默认设置的表格环境中,根本不会出现这种错位。

答案1

渴望评论:

  • 你喜欢用你的代码实现什么?
  • 字体大小由文档类别的选项定义(article10、11 和 12 pt)
  • 你可以通过命令(本地)更改这些尺寸\Huge,,\huge...\scriptsize\tiny
  • 如果这些命令不能满足您的要求,您可以使用宏\fontsize{<size>}{<skip>}\selectfont,它skip通常比size(它定义文本行距,请参阅什么是skip)。例如,文章中的默认值是\fontsize{10}{12}selectfont`
  • 不清楚,为什么需要两种样式来定义矩阵的样式?

编辑: 关于将行高定义为所用字体的大小:这是自动完成的。因此不清楚您的问题是什么。

简化的代码可以工作并且给出(我认为不错的结果)以下:

\documentclass[margin=3mm, varwidth]{standalone}

\setlength{\parindent}{0pt}
\usepackage{tikz}
\usetikzlibrary{matrix}
\tikzset{
 M/.style args = {#1/#2/#3}{% M as Matrix
        matrix of nodes,
        nodes in empty cells,
        nodes = {draw, anchor=center,
                 outer sep=0pt, inner sep=3pt,
                 text width=#1, text depth=0.25ex,
                 font=\fontsize{#2}{#3}\selectfont,
                 row sep=-\pgflinewidth,
                 column sep=-\pgflinewidth},
        matrix anchor=north,
                        }
        }
\begin{document}
    \begin{tikzpicture}    
\matrix at (0,0) [M=22mm/10/12] (t1)
{
first line\\
second q line\\
};
    \end{tikzpicture}
\end{document}

在此处输入图片描述

如果您不喜欢绘制的节点边框,请draw从节点选项中删除选项。

如果由于某种原因您坚持使用两种样式来定义矩阵样式,那么您可以尝试以下建议,看看是否适合您:

\documentclass[margin=3mm, varwidth]{standalone}

\setlength{\parindent}{0pt}
\usepackage{tikz}
\usetikzlibrary{matrix}
\tikzset{
 M/.style = {% M as Matrix
        matrix of nodes,
        nodes in empty cells,
                 row sep=-\pgflinewidth,
                 column sep=-\pgflinewidth,
        matrix anchor=north,
                        },
Mn/.style args = {#1/#2/#3}{% Mn as Matrix nodes
        nodes = {anchor=center,
                 outer sep=0pt, inner sep=3pt,
                 text width=#1, text depth=0.25ex,
                 font=\fontsize{#2}{#3}\selectfont}
                            }
        }
\begin{document}
    \begin{tikzpicture}    
\matrix at (0,0) [M, Mn=22mm/10/12] (t1)
{
first line\\
second q line\\
};
    \end{tikzpicture}
\end{document}

两种情况下的编译结果都是相同的!

\documentclass[margin=3mm, varwidth]{standalone}

\setlength{\parindent}{0pt}
\usepackage{tikz}
\usetikzlibrary{matrix}
\tikzset{
 M/.style = {% M as Matrix
        matrix of nodes,
        nodes in empty cells,
                 row sep=-\pgflinewidth,
                 column sep=-\pgflinewidth,
        matrix anchor=north,
                        },
Mn/.style args = {#1/#2/#3}{% Mn as Matrix nodes
        nodes = {anchor=center,
                 outer sep=0pt, inner sep=3pt,
                 text width=#1, text height=#3,
                 text depth=0.25ex,
                 font=\fontsize{#2}{#3}\selectfont}
                            }
        }

然而,如果你愿意

相关内容