使用该graphicx
包,我可以使用命令旋转任意盒子\rotatebox{...}{...}
。 是否有任何包中有类似的命令可以让我剪切盒子,即产生一种一般倾斜?
答案1
使用比 David 的答案略新的 pdfTeX,您可以更直接地使用 进行仿射变换\pdfsetmatrix
。我并不声称对此有所了解,但这里大致是 graphicx 在后台所做的事情\rotatebox
(当然,使用不同的矩阵)。
\documentclass{article}
\newsavebox{\foobox}
\newcommand{\slantbox}[2][.5]
{%
\mbox
{%
\sbox{\foobox}{#2}%
\hskip\wd\foobox
\pdfsave
\pdfsetmatrix{1 0 #1 1}%
\llap{\usebox{\foobox}}%
\pdfrestore
}%
}
\begin{document}
\slantbox{Hello, world!}
\slantbox[-2]{Hello, world!}
\slantbox[-1]{Hello, world!}
\slantbox[-.8]{Hello, world!}
\slantbox[-.6]{Hello, world!}
\slantbox[-.4]{Hello, world!}
\slantbox[-.2]{Hello, world!}
\slantbox[.2]{Hello, world!}
\slantbox[.4]{Hello, world!}
\slantbox[.6]{Hello, world!}
\slantbox[.8]{Hello, world!}
\slantbox[1]{Hello, world!}
\slantbox[2]{Hello, world!}
\end{document}
编辑:正如 quark67 指出的那样,要将此代码与 LuaLaTeX 一起使用,您只需首先加载包luatex85
,它提供命令\pdfsave
、、(请参阅手册第 2.5 节)。\pdfsetmatrix
\pdfrestore
答案2
啊哈,TikZability 机会!
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\begin{scope}[cm={1,0,1,1,(0,0)}] % Sets the coordinate trafo matrix entries.
\node[transform shape] at (0,0) {ABC};
\end{scope}
\begin{scope}[cm={1,0,-1,1,(0,0)}]
\node[transform shape] at (3,0) {Hello};
\end{scope}
\begin{scope}[cm={1,0,-1,-1,(0,0)}]
\node[transform shape] at (2,2) {World};
\end{scope}
\begin{scope}[cm={1,0,1,-1,(0,0)}]
\node[transform shape] at (1,2) {FOObar?};
\end{scope}
\end{tikzpicture}
\end{document}
您可以将其放入节点而不是盒子(风险更小:P)。
答案3
您可以弄乱坐标矩阵,但风险自负......
\documentclass{article}
\begin{document}
ABC\pdfliteral{ q 2 0.1 0.6 .4 0 0 cm}\rlap{XYZ}\pdfliteral{ Q}
\end{document}
答案4
剪切变换可以分解为缩放和旋转。
% \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}}}}}}