文字颠倒、字符沿基线旋转?

文字颠倒、字符沿基线旋转?

我想要实现如下图所示的效果:

在此处输入图片描述

另一个例子:

在此处输入图片描述

请注意,文本并不是简单地旋转!我知道可以通过分别框住每个字符、测量高度,然后按缺失量增加以达到例如 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 来将文本与其他未旋转的文本对齐

output of example code

答案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 会导致:

upside down text

代码如下是:

\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 度会导致:

rotated text

缺少空格(也许包含空格的框有宽度但没有高度?),并且可以在字符之间增加一些间距。

顺便说一句,虽然这看起来很简洁,但它的工作方式正是所说的:沿着文本走,测量每个字符,并将其排版到正确的位置。只是代码(几乎)已经存在,可以用来执行以下操作:

The Mouse's Tale

我确信,这正是刘易斯·卡罗尔如果他了解 TeX 和 TikZ 的话就会写。

相关内容