梅威瑟:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes}
\begin{document}
\begin{tikzpicture}
\tikzset{elips/.style={ellipse,draw},}
\tikzset{yuvar/.style={circle,draw},} % yuvar means circular in Turkish
\begin{scope}
\node (A)[elips] at (0,0) {A}; % This should look like an ellipse but it doesn't
\node (B)[yuvar] at (2,0) {B};
\node (C)[elips] at (4,0) {AA}; % This is an ellipse but only if C's are doubled
\end{scope}
\end{tikzpicture}
\end{document}
为了使节点A
略微呈椭圆形(像从顶部和底部轻轻按压的球),我必须在其中添加更多文本,例如,不仅仅是放A
我必须放的AA
。
我尝试过几种方法,例如修补inner sep=0.5cm
等等,但都没有成功。
如何使节点变成椭圆形,而不必添加多个字母或不显著改变其默认大小?
样本:
a
顶部和底部是扁平的,但尺寸没有明显改变,即水平长度保持不变。
答案1
(评论和问题编辑后更新)
当您使用该ellipse
形状时,椭圆将“紧密贴合”包含文本和内部分隔的矩形。因此,如果您只想要略微的差异,您可以执行以下操作(但请注意,它不适用于最后一个椭圆,它必须增大以适合文本):
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes}
\begin{document}
\begin{tikzpicture}
\tikzset{elips/.style={ellipse,draw,minimum width=2em,minimum height=1.8em,inner ysep=0pt},}
\tikzset{yuvar/.style={circle,draw,minimum width=2em},} % yuvar means circular in Turkish
\begin{scope}
\node (A)[elips] at (0,0) {A}; % This should look like an ellipse but it doesn't
\node (B)[yuvar] at (1,0) {B};
\node (C)[elips] at (2,0) {p};
\node (D)[elips] at (3,0) {DD};
\node (E)[elips] at (5,0) {EEEEEEE};
\end{scope}
\end{tikzpicture}
\end{document}
请注意,A 和 B 之间的差异与您的草图非常相似,但这在很大程度上取决于圆圈中包含的内容。后代,如“p”,将产生不对称。
另一种策略是始终使用椭圆,但强制将文本置于“假”矩形中,如以下代码所示。该命令\fixedsize
(肯定可以优化)将文本排版在给定大小的假矩形的中心,无论文本的大小如何。然后您只需使用没有内部分隔符的椭圆即可:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes}
\begin{document}
\setlength{\fboxsep}{0pt}
\setlength{\fboxrule}{1pt}
\newcommand{\fixedsize}[3]{%width, height, content
\parbox[c][#2][c]{#1}{\hfil\makebox[0pt][c]{#3}\hfil}%
}
\newcommand{\fitcircle}[1]{\fixedsize{1.2em}{1.2em}{#1}}
\newcommand{\fitoval}[1]{\fixedsize{1.2em}{1.0em}{#1}}
\begin{tikzpicture}
\tikzset{my/.style={ellipse,draw,inner sep=0pt}}
\begin{scope}
\node (A)[my] at (0,0) {\fitcircle{A}};
\node (B)[my] at (1,0) {\fitoval{B}};
\node (C)[my] at (2,0) {\fitoval{p}};
\node (D)[my] at (3,0) {\fitoval{DD}};
\node (E)[my] at (5,0) {\fitoval{EEEEEEE}};
\end{scope}
\end{tikzpicture}
\end{document}
您可以调整\fitoval
和的尺寸\fitcircle
来获得您需要的东西。