Re: 文字タイプについて

名前: しっぽ愛好家
日時: 2003-11-19 03:14:09
IPアドレス: 211.4.43.*

>>23662 確かに回転とスケーリングの合成で表せますね. (計算を間違えていなければ)次のように一般化(?)できるのでしょうか. %%% 例示していただいた \Sl{10度斜体} などが占める領域のサイズが %%% 気になりましたので,ボックスのサイズを細工しています. \documentclass{jarticle} \usepackage{graphicx} \makeatletter \def\simpleslantbox#1#2{% #1: angle (|#1| <= 30 degree), #2: text %%% tau := tan(angle) \leavevmode \begingroup \setbox\@tempboxa\hbox{#2}% \dimen@#1\p@ \ifdim\dimen@<\z@ \def\@tempa{-#1}% \def\@hcorr{\the\@tempdima}% \else \def\@tempa{#1}% \def\@hcorr{\z@}% \fi \expandafter\CalculateTan\expandafter{\@tempa}% \@tempdima\ht\@tempboxa \@tempdima \UseTan\@tempa \@tempdima \edef\@hcorr{\@hcorr}% \advance\@tempdima\wd\@tempboxa \@tempdimb\ht\@tempboxa \@tempdimc\dp\@tempboxa \CalculateTan{#1}% \dimen@ \UseTan{#1}\p@ \divide\dimen@\tw@ \edef\@x{\strip@pt\dimen@}%%% \@x = tau / 2 \dimen@\@x\p@ \dimen@\@x\dimen@ \edef\@xx{\strip@pt\dimen@}%%% \@xx = (tau / 2)^2 \setbox\z@\hbox{% \@find@rotate@angle \@find@scaling@factor \wd\@tempboxa\z@ \ht\@tempboxa\z@ \dp\@tempboxa\z@%%% (*) \hskip\@hcorr \rotatebox{\@angleii}% {\scalebox{\@factori}[\@factorii]% {\rotatebox{\@anglei}{\box\@tempboxa}}}}% \wd\z@\@tempdima \ht\z@\@tempdimb \dp\z@\@tempdimc%%% (*) \box\z@ \endgroup} \def\@find@rotate@angle{% \@tempdima\@x\p@ \@tempdimb\@x\p@ \count@\@ne \def\@tempsign{+}% \@whilenum9>\count@\do{% \advance\count@\tw@ \edef\@tempsign{\if+\@tempsign -\else +\fi}% \@tempdimb\@xx\@tempdimb \dimen@\@tempdimb \divide\dimen@\count@ \advance\@tempdima\dimen@}% \@tempdima-28.64789\@tempdima \advance\@tempdima 45\p@ \edef\@anglei{\strip@pt\@tempdima}%%% pi / 4 - (arctan (tau / 2)) / 2 \advance\@tempdima-90\p@ \edef\@angleii{\strip@pt\@tempdima}}%%% \@angleii = \@anglei - (pi/2) \def\@find@scaling@factor{% \@tempdima\p@ \@tempdimb\p@ \@tempdimb \@xx\@tempdimb \dimen@\@tempdimb \divide\dimen@\tw@ \advance\@tempdima \dimen@ \@tempdimb \@xx\@tempdimb \dimen@\@tempdimb \divide\dimen@ 8 \advance\@tempdima-\dimen@ \@tempdimb \@xx\@tempdimb \dimen@\@tempdimb \divide\dimen@ 16 \advance\@tempdima \dimen@ \@tempdimb \@xx\@tempdimb \dimen@\@tempdimb \multiply\dimen@ 5 \divide\dimen@ 128 \advance\@tempdima-\dimen@ \dimen@\@tempdima \advance\dimen@-\@x\p@ \edef\@factori{\strip@pt\dimen@}%%% sqrt((tau/2)^2 + 1) - (tau/2) \dimen@\@tempdima \advance\dimen@\@x\p@ \edef\@factorii{\strip@pt\dimen@}}%%% sqrt((tau/2)^2 + 1) + (tau/2) \makeatother \begin{document} \simpleslantbox{10}{10度斜体} \simpleslantbox{20}{20度斜体} \simpleslantbox{30}{30度斜体} \simpleslantbox{12}{12度斜体} \end{document}

この書き込みへの返事:

お名前
題名 
メッセージ(タグは <a href="...">...</a> だけ使えます)