Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

\strut #81

Open
aminophen opened this issue Nov 13, 2018 · 1 comment
Open

\strut #81

aminophen opened this issue Nov 13, 2018 · 1 comment

Comments

@aminophen
Copy link
Member

#20 (\strutbox 見直し)の続きで,今度は \strut です。

縦数式ディレクションの \strut では,\tstrutbox ではなく \zstrutbox を使うほうが自然に見える(横書きの 90 度回転ぴったりになる)のですが,いかがでしょうか。以下の例示ソースは,pLaTeX / LuaLaTeX 両方でコンパイルできるようにしてあります。

\documentclass{article}

% minipage dir <t>
\ifx\directlua\undefined
  \usepackage{plext}
\else
  \usepackage{lltjext}
\fi

\usepackage{amsmath}% \cfrac を使うため (\strut used in math mode)
\newcommand{\myunderline}[1]{\underline{\rule[-.5ex]{0pt}{1.5ex}#1}}
\newcommand{\varunderline}[1]{\underline{\strut #1}}
\def\TESTA#1{#1{h}, #1{m}, #1{g}, #1{y}, #1{あ}}
\def\TESTB#1{#1{$\int_0^\infty \frac{1}{x}\,\mathrm{d}x$}}
\def\TEST{%\TESTA\underline, \TESTB\underline\par\TESTA\myunderline, \TESTB\myunderline\par\TESTA\varunderline, \TESTB\varunderline\par$A_1^2 \strut_1^2 \int_0^\infty \frac{1}{x}\,\mathrm{d}x$
  $\cfrac{1}{\sqrt{2}+\cfrac{1}{\sqrt{2}+\cfrac{1}{\sqrt{2}+\dotsb}}}$}

\usepackage{graphicx}% for \rotatebox{90}{...} to compare overlay

\begin{document}

横
\begin{minipage}<y>{10cm}
\TEST
\end{minipage}
\clearpage\rotatebox{90}{\begin{minipage}<t>{10cm}
\TEST
\end{minipage}}

\end{document}

pLaTeX の場合だと,具体的なコード案は下記の通りです。

%% 新定義
\makeatletter
%% \strut の改良版
\def\strut{\relax
  \iftdir
    \ifmdir
      %% [縦数式ディレクション]
      %% テキストモードの場合は \zstrutbox でなければならない気がする。
      %% (下線 \underline で使う場合に横組の 90 度回転にならない)
      %% 数式モードの場合は \zstrutbox に変えるとかえってバランスが崩れるが,
      %% これは \copy したボックスにベースライン補正が効かないためであり,
      %% その分 \lower で下げる。
      \ifmmode \lower \tbaselineshift \copy \zstrutbox \else \unhcopy \zstrutbox \fi
    \else
      %% [縦ディレクション]
      %% テキストモードの場合は \tstrutbox で良い。
      %% 数式モードに入ると自動的に [縦数式ディレクション] に入るので分岐不要。
      \unhcopy \tstrutbox
    \fi
  \else
    %% [横ディレクション]
    %% テキストモードの場合は \(y)strutbox で良い。
    %% 数式モードではベースライン補正分だけ \lower で下げる。
    \ifmmode \lower \ybaselineshift \copy \ystrutbox \else \unhcopy \ystrutbox \fi
  \fi}
%% \strutbox は \zstrutbox を使うとまずそうなので 2017-04-08 のまま
%\def\strutbox{%
%  \iftdir \ifmdir \zstrutbox \else \tstrutbox \fi
%  \else \ystrutbox \fi}
\makeatother
@aminophen
Copy link
Member Author

exppl2e.sty に入れました。正式に pLaTeX に入れるかどうかは追って検討します。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant