2009-08-17 11 views
4

Une police que j'utilise n'a pas la variante oblique/oblique dans LaTeX (NB: pas en italique), et je voudrais avoir du texte incliné par endroits.Comment "truquer" du texte incliné dans LaTeX?

Existe-t-il un moyen facile d'incliner le texte sans avoir à générer des fichiers de police entièrement nouveaux et autres?

Une solution proposée était de faire:

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

Cela fonctionne bien pour un ou deux mots, mais les nœuds tikz ne se cassent pas à travers les lignes, il est donc pas suffisant, pour, disons, un environnement de théorème.

Évidemment, une méthode rapide et sale ne donnera pas un crénage ou un espacement exceptionnel, mais cela ne me préoccupe pas. Cependant, un cisaillement/inclinaison de 13 degrés serait souhaitable.

+0

ce que la police vous utilisez ne pas une barre oblique ou italique ?? – Mica

+0

La police, Adobe Minion Pro, est en italique, mais aucun caractère oblique. – Quadrescence

+0

Désolé, mais je pense que vous devrez apprendre en utilisant par exemple. Metafont pour ça. – Svante

Répondre

5

Utilisez une police qui a des italiques. Les polices standard sont préférables sauf si vous êtes en marketing.

+4

Dans LaTeX, vous ne voulez pas "fausser" ou "pirater" les choses.Comme avec presque tout, il est préférable de le faire correctement. C'est pourquoi c'est la bonne façon. –

+0

+1 Les polices ayant une variante en italique fonctionnent mieux que les polices non italiques. – Spoike

+1

S'il vous plaît noter la différence entre incliné et italique. – Svante

6

Vous pouvez le faire facilement dans XeLaTeX:

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

cependant, s'il est très indésirable, une chance que vous pouvez obtenir un real italic.

Mise à jour: pourquoi indésirable? Parce que les polices ne sont pas conçues pour être déformées! Toute forme de transformation autre que la mise à l'échelle linéaire dans les deux sens modifiera la relation entre les courbes internes/externes des lettres, ce qui ira à l'encontre des souhaits du concepteur de polices.

Si vous voulez mettre en surbrillance quelque chose dans une police différente de la police romaine et ne pas utiliser l'italique, essayez quelque chose de complètement différent comme un sans empattement harmonisant, par exemple.

+1

S'il vous plaît noter la différence entre incliné et italique. – Svante

3

J'utilise LuaLaTeX, mais ce qui suit devrait également fonctionner avec XeLaTeX. LuaLaTeX, d'après mon expérience, est totalement rétrocompatible avec le bon vieux LaTeX, et ce n'est que légèrement plus lent. Et créer de nouvelles macros intelligentes est un jeu d'enfant. De toute façon, assez de prosélytisme.

Ceci est tiré presque directement à partir d'un de mes documents. Certains d'entre eux sont hackish, oui, mais cela convient bien à mes besoins - et les résultats sont tout à fait respectables.

\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\[email protected]\texttt 
\renewcommand{\texttt}[1]{{\smaller\[email protected]{#1}}} 
\makeatother 
0

Voici quelques macros pour le cisaillement, mais ce ne sera pas ce que vous voulez non plus, je suppose.

 
\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}}}}}} 
0

Le XeLaTeX/réponse ci-dessus en quelque sorte de police mentionnée ne fonctionnerait pas pour moi, alors je suis venu avec ceci:

\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} 
Questions connexes