我尝试将简单的文本放在椭圆内,但不起作用(文本溢出椭圆)。所以我想我需要在文本周围放一个椭圆。
我在 METAFUN 中有这段代码,但我想将其移植到 TikZ:
% cover in METAFUN
\startuseMPgraphic{cover}
StartPage ;
fill Page withcolor white ;
pickup pencircle scaled 2mm ;
path p ; p := tensecircle(1cm,.75cm,.15cm) xsized(PaperWidth-2cm) ;
draw p shifted center Page withcolor .720green ;
StopPage ;
\stopuseMPgraphic
\defineoverlay[cover][\useMPgraphic{cover}]
% The first page
\starttext
\setupbackgrounds[page][background=cover]
\startstandardmakeup
{\raggedcenter
\vfill\startcolor[middleblue]{\switchtobodyfont[30pt] Title\par}\stopcolor
\blank[2*big]
\ \ \ \ \thinrule \ \ \ \
\blank[big]
{\switchtobodyfont[16pt]\sc Subtitle with long explanation\par}
\vfill
{\switchtobodyfont[14pt]{\sc Author}}\par}
\stopstandardmakeup
\setupbackgrounds[page][background=]
\stoptext
答案1
之前,这个答案包含完整的形状定义。它已移至ext.shapes.superellipse
我的tikz-ext
包裹并且可以简单地通过
\usetikzlibrary{ext.shapes.superellipse}
A超椭圆形状。
键:
superellipse x exponent
,superellipse y exponent
,superellipse step
(绘图循环的步宽)和superellipse exponent
(同时设置X和是指数)。
找到边界上的锚intersections
需要花一点时间。
半径的计算与形状的计算相同,ellipse
形状需要将值乘以 √2。为了在一页上容纳大量文本,我们使用的文本宽度为,1/√2 * \linewidth
并从中减去inner xsep
s 和\pgflinewidth
(这样形状的线条就不会突出到边距中)。
text width=.7071067\linewidth-\pgfkeysvalueof{/pgf/inner xsep}*2-\pgflinewidth
我还设置了align=flush center
居中文本不是用连字符。
在节点内部,尺寸\linewidth
是与一样长text width
,因此我们可以直接将其用于水平\rule
。
尽管如此,整体现在与我仍然会将其放入不缩进行且作为其自己的段落的环境中tikzpicture
一样宽。\linewidth
center
序言的末尾有一些命令用于显示页面的垂直线。否则就不需要这些命令了。
代码
\documentclass{article}
\usepackage{tikz}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepgflibrary{ext.shapes.superellipse}
% Begin: adjust frame of geometry
\usepackage[pass,showframe]{geometry}\usepackage{etoolbox}
\makeatletter
\preto\Gm@vrule{\color{red}}\let\Gm@hrule\@empty\let\Gm@hruled\@empty
\makeatother
% Begin: end frame of geometry
\begin{document}
\begin{center}
\tikz\node[draw=green, line width=2pt, superellipse, align=flush center,
text width=.7071067\linewidth-\pgfkeysvalueof{/pgf/inner xsep}*2-\pgflinewidth
]{
{\Huge\color{blue}Apunts de Matemàtiques
per a l'Accés a la UIB per a majors de 25 anys\par}
{\color{gray}\rule[.5ex]{\linewidth}{1pt}\par}
{Teoria i exercicis per a la preparació de les
``Proves d'accés a la Universitat de les Illes Balears per a majors de
25~anys i menors de 40~anys'' de l'assignatura de Matemàtiques\par}};
\end{center}
\end{document}
输出
答案2
\documentclass[tikz, border=1cm]{standalone}
\begin{document}
\begin{tikzpicture}[
declare function={
sx(\t)= a*cos(\t r)^(2/n);
sy(\t)= b*sin(\t r)^(2/n);
a=5;
b=4;
n=2.5;
}]
\draw[green!80!black, line width=3pt, variable=\t, domain=0:pi/2] plot({sx(\t)},{sy(\t)}) -- plot({-sx(pi/2-\t)},{sy(pi/2-\t)}) -- plot({-sx(\t)},{-sy(\t)}) -- plot({sx(pi/2-\t)},{-sy(pi/2-\t)}) -- cycle;
\node[blue, yshift=0.6cm]{\Large Title};
\node[yshift=-0.5cm]{Subtitle with long explanation};
\draw (-4,0) -- (4,0);
\end{tikzpicture}
\end{document}
\documentclass[tikz, border=1cm]{standalone}
\begin{document}
\begin{tikzpicture}[
declare function={
sx(\t)= a*cos(\t r)^(2/n);
sy(\t)= b*sin(\t r)^(2/n);
a=15;
b=10;
n=2.2;
}]
\draw[green!80!black, line width=4pt, variable=\t, domain=0:pi/2] plot ({sx(\t)},{sy(\t)}) -- plot({-sx(pi/2-\t)},{sy(pi/2-\t)}) -- plot({-sx(\t)},{-sy(\t)}) -- plot({sx(pi/2-\t)},{-sy(pi/2-\t)}) -- cycle;
\node[blue, yshift=0.8cm]{\Huge Apunts de Matemàtiques per a l'Accés a la UIB per a majors de 25 anys};
\node[yshift=-0.5cm]{Teoria i exercicis per a la preparació de les ``Proves d'accés a la Universitat de les Illes Balears per a majors de 25 anys i menors de 40 anys'' de l'assignatura de Matemàtiques};
\draw (-14,0) -- (14,0);
\end{tikzpicture}
\end{document}