我想要实现如下图所示的效果:
另一个例子:
请注意,文本并不是简单地旋转!我知道可以通过分别框住每个字符、测量高度,然后按缺失量增加以达到例如 1em 来实现...但我确信有更好的方法。
我想要一个可以对整行起作用的宏(如果是整段就更好了!:))。
编辑:除非具有某些特殊特征(如“t”中的“删除线”),否则上升部应突出(与下降部一样)。大写字母不应突出。
答案1
感谢大家的回答!在自己做了一些研究并挖掘出一些我从未使用过的软件包后,我也相信输入需要逐个字符地进行扫描,正如@egreg所建议的那样。
因此,这里有一个方法可以做到LaTeX
:
\documentclass{minimal}
\usepackage{graphicx}
\usepackage{xstring}
\usepackage{forloop}
\begin{document}
\newcounter{idx}
\newcounter{posx}
\newcommand{\rotraise}[1]{%
\StrLen{#1}[\slen]
\forloop[-1]{idx}{\slen}{\value{idx}>0}{%
\StrChar{#1}{\value{idx}}[\crtLetter]%
\IfSubStr{tlQWERTZUIOPLKJHGFDSAYXCVBNM}{\crtLetter}
{\raisebox{\depth}{\rotatebox{180}{\crtLetter}}}
{\raisebox{1ex}{\rotatebox{180}{\crtLetter}}}}%
}
This is what I want to get.
\rotraise{This is what I want to get.}
\end{document}
您可以在下面欣赏结果。:)
答案2
以下是使用该软件包的功能的几种可能性graphicx
:
\documentclass{article}
\usepackage{graphicx}
\parindent0pt
\begin{document}
Upside down\\
\rotatebox{180}{Upside down} Upside down \\
\rotatebox{180}{\reflectbox{Upside down}} Upside down and mirrored \\
\raisebox{\depth}{\rotatebox{180}{Upside down}} Upside down and raised to fit in line
\end{document}
或者你可以用{\depth}
一个数字来改变..比如 0.5em 来将文本与其他未旋转的文本对齐
答案3
Facebook 实际上并没有翻转字母,它只是滥用 Unicode 提供的各种字符(例如 IPA 字符)。使用 XeLaTeX 或 LuaLaTeX 和合适的字体,您可以做同样的事情:
\documentclass{article}
\usepackage{fontspec}
\setmainfont{FreeSans}
\begin{document}
uʍop əpısdՈ
\end{document}
(使用xelatex
或进行编译lualatex
。)
这里实际使用的字符是:
u latin small letter u
ʍ latin small letter turned w
o latin small letter o
p latin small letter p
space
ə latin small letter schwa
ı latin small letter dotless i
s latin small letter s
d latin small letter d
Ո armenian capital letter vo
产出的质量当然是有争议的。
答案4
我有点惊讶地发现 TikZ 的文本装饰并没有考虑到这一点。然而,\rotatebox
在代码的正确位置(我希望)明智地插入一个 in 会导致:
代码如下会是:
\documentclass{standalone}
%\url{http://tex.stackexchange.com/q/28861/86}
\usepackage{tikz}
\usetikzlibrary{decorations.transformedtext}
\begin{document}
\begin{tikzpicture}
\useasboundingbox (-1,1) -- (5,-1);
\path[decorate,decoration={transformed text along path,text={upside down}, text rotation=180}] (0,0) -- (5,0);
\end{tikzpicture}
\end{document}
如果有 PGF 库pgflibrarydecorations.transformedtext.code.tex
。实际代码是 的一个非常小的修改pgflibrarydecorations.text.code.tex
,但为了使其成为一个实际的库,需要进行一些压力测试。例如,仅将文本旋转 90 度会导致:
缺少空格(也许包含空格的框有宽度但没有高度?),并且可以在字符之间增加一些间距。
顺便说一句,虽然这看起来很简洁,但它的工作方式正是所说的:沿着文本走,测量每个字符,并将其排版到正确的位置。只是这代码(几乎)已经存在,可以用来执行以下操作:
我确信,这正是刘易斯·卡罗尔会如果他了解 TeX 和 TikZ 的话就会写。