如何在LaTeX中“伪造”倾斜文本?

时间:2009-08-17 17:56:04

标签: latex fonts

我正在使用的字体在LaTeX中没有倾斜/倾斜变体(NB:不是斜体),我想在某些地方放置斜文字。

是否有一种简单的方法来倾斜文本而不必生成全新的字体文件等?

一个建议的解决方案是:

\renewcommand{\textsl}[1]{\tikz[baseline=(X.base)] \node[xslant=0.2231153] (X) {#1};}

这适用于一个或两个单词,但tikz节点不会跨越行,因此它不适合,例如,一个定理环境。

显然,快速而肮脏的方法不会产生特殊的字距或间距,但我并不担心。但是,需要13度剪切/倾斜。

5 个答案:

答案 0 :(得分:6)

使用具有斜体的字体。除非您正在营销,否则标准字体是最好的。

答案 1 :(得分:6)

您可以在XeLaTeX中轻松完成此任务:

\usepackage{fontspec}
...
\fontspec[ItalicFont=*,ItalicFeatures=FakeSlant]{Minion Pro}

非常不受欢迎,但是,如果有机会你可以获得real italic

更新:为什么不受欢迎?因为字体轮廓不是为了扭曲而设计的!除了两个方向上的线性缩放之外的任何类型的变换都将改变字母的内/外曲线之间的关系,实际上违背字体设计者的意愿。

如果你想用不同于罗马字体的字体突出显示某些内容而不使用斜体,请尝试完全不同的东西,例如协调无衬线字体。

答案 2 :(得分:3)

我使用LuaLaTeX,但以下内容也适用于XeLaTeX。根据我的经验,LuaLaTeX完全向后兼容好的旧LaTeX,而且速度稍慢。制作新的,聪明的宏是轻而易举的。无论如何,足够的传教。

这几乎是直接来自我的一份文件。有些是hackish,是的,但它很适合我的需求 - 而且结果非常可观。

\usepackage{relsize} % For \texttt definition below
\usepackage{fontspec}

\setmainfont% Minion Pro, not redistributable?
[Ligatures=TeX,
SlantedFont=*,
SlantedFeatures={FakeSlant=0.2},
BoldSlantedFont=* Bold,
BoldSlantedFeatures={FakeSlant=0.2}
]{Minion Pro}

\setsansfont% Linux Biolinum O % SIL Open Font License
[Ligatures=TeX,
Extension=.otf,
BoldFont=fxbb,
ItalicFont=fxbri,
BoldItalicFont=fxbri,
BoldItalicFeatures={FakeBold=1.5}, % Note: This is not currently working in LuaTeX!
SlantedFont=fxbro,
BoldSlantedFont=fxbbo
]{fxbr}

\setmonofont[Ligatures=TeX]{DejaVu Sans Mono} % "Free License" No General Restictions
\makeatletter
\let\old@texttt\texttt
\renewcommand{\texttt}[1]{{\smaller\old@texttt{#1}}}
\makeatother

答案 3 :(得分:0)

以下是剪切的一些宏,但我想这也不是你想要的。

\usepackage{graphicx}

%\hshearbox{vertical_prescale_times_shearfactor}{one_divide_by_shearfactor}{content}
% an initial vertical downscale is often necessary for a 3d projection
\newcommand{\hshearbox}[3]{\scalebox{0.866025}[#2]{\rotatebox{210}%
{\scalebox{1.73205}[-0.57735]{\rotatebox{60}{\scalebox{-1.1547}[#1]{#3}}}}}}

%\vshearbox{horizontal_prescale_times_shearfactor}{one_divide_by_shearfactor}{content}
% an initial horizontal downscale is often necessary for a 3d projection
\newcommand{\vshearbox}[3]{\scalebox{#2}[0.866025]{\rotatebox{210}%
{\scalebox{-0.57735}[1.73205]{\rotatebox{60}{\scalebox{#1}[-1.1547]{#3}}}}}}

答案 4 :(得分:0)

上面提到的XeLaTeX / fontspec答案不会对我有用,所以我提出了这个:

\documentclass{article}
\usepackage{fontspec}

\setmainfont{Linux Libertine O}

\newcommand{\slsc}[1]{\fontspec[SmallCapsFeatures={FakeSlant=0.6}]{Linux Libertine O}\textsc{#1}\fontspec[]{Linux Libertine O}}

\begin{document}

    normaltext

    \textsc{textsc}

    \slsc{textslsc} % this will produce slanted small caps

\end{document}