字母的垂直“堆叠”,其中每个字母都旋转到其下方字母的顶部

字母的垂直“堆叠”,其中每个字母都旋转到其下方字母的顶部

我在 tikz 中寻找一种简单的方法,可以旋转文本,使文本中的每个字母“位于”或“堆叠”在后继字母之上。例如,“环境”一词将显示为:

E
n
v
i
r
o
n
m
e
n
t

谢谢。

答案1

通常我这样回答:“如果你不介意加载 TiZ,你可以......”但这里有人可能会说:如果你不介意不使用 Ti您可以改用soulZ。

\documentclass{article}
\usepackage{soul}
\makeatletter
\def\SOUL@soeverytoken{%
 {\the\SOUL@token}\par\noindent}
\makeatother
\begin{document}
\noindent\so{Environment}
\end{document}

在此处输入图片描述

这个答案的灵感来自于这个答案。如果有人因为我引用他人的话而想(再次)给我差评,那就去吧。

Z 库decorations.text提供了高级选项,例如

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{decorations.text}
\begin{document}
\begin{tikzpicture}[decoration={text effects along path, 
text={Environment},
text effects/.cd,
path from text angle=-90,
path from text,
characters={text along path},
character widths={inner xsep=1pt},
style characters=mw with {blue,inner xsep=0.4pt},
style characters=bdfhjklt with {red,inner xsep=1.5pt},
style characters=i with {orange,inner xsep=2.2pt},
style characters=gpqy with {inner xsep=1.2pt}}]
\path [ decorate,
text effects={characters/.append={/utils/exec=\pgftransformresetnontranslations}}] (1,0); \end{tikzpicture}
\end{document}

在此处输入图片描述

这里\pgftransformresetnontranslations用于“取消旋转”字符。

而且由于似乎希望使用尽可能少的软件包:所以您不需要任何软件包。

\documentclass{article}
\def\endpft{Yekitiyekitipeng}%<- something crazy
\def\rst{}
\def\pft#1#2\endpft{\ifx#2\endpft%
\else%
#1\\%
\def\rst{#2}
\pft#2\endpft%
\fi}
\newcommand{\vtext}[2][]{\begingroup\renewcommand{\arraystretch}{0.63}%
\begin{tabular}[#1]{@{}c@{}}%
\,\pft#2\endpft\rst%
\end{tabular}\endgroup}
\begin{document}
\vtext{Environment}
\end{document}

在此处输入图片描述

是否值得尽可能少地使用软件包是一个不同的问题。在我看来,只有当你用更少的软件包获得相同的结果时,情况才会如此。另一方面,TiZ 允许您轻松地沿曲线排版文本,这是在没有软件包的情况下很难实现的。

答案2

无钛Z,对不起。

\documentclass{article}
\usepackage{xparse}

\ExplSyntaxOn
\NewDocumentCommand{\stack}{O{c}m}
 {
  \begin{tabular}[#1]{@{}c@{}}
  \tl_map_function:nN { #2 } \__tom_stack:n
  \end{tabular}
 }
\cs_new_protected:Nn \__tom_stack:n { #1 \\ }
\ExplSyntaxOff

\begin{document}

x\stack{Environment}\qquad x\stack[t]{Environment}\qquad x\stack[b]{Environment}

\end{document}

我们只需将参数映射到填充即可tabular。可选参数设置参考点,就像 for 一样tabularx示例中的显示参考点)。

在此处输入图片描述

答案3

使用 MetaFun

\startMPpage
string s ;
s := "Experiment" ;
for i = 1 upto length s:
    label(substring (i - 1, i) of s, (0,-i*.5cm)) ;
endfor ;
\stopMPpage

在此处输入图片描述

相关内容