在 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
渴望评论:
- 你喜欢用你的代码实现什么?
- 字体大小由文档类别的选项定义(
article
10、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}
}
}
然而,如果你愿意