左下に添え字

左下に添え字

- あ い の投稿
返信数: 4
【環境】  lualatex, MacBook 【目標・問題点】  英文の品詞分解マクロを作ろうと試み(画像の通り),¥ifthenelse, counter, ¥expandafterなどを用い試行錯誤しましたが,文字の高さ調節を自動化するところがうまくいきません(${}_n$だと,nの高さが直後の文字列に影響されないので使えません)。  最終的に以下のサイトにこぎつけたのですが,長さを測っているからかコンパイルが異常に遅いです。そこで,解決方法をご教示願い,質問を投稿させていただきます。よろしくお願いいたします。   http://www-an.acs.i.kyoto-u.ac.jp/~fujiwara/tex/subscripts.html 【ソース】 ¥documentclass[a4paper,18pt]{ltjsarticle} ¥usepackage{luatexja} ¥usepackage{luatexja-fontspec} ¥usepackage{luatexja-otf} ¥usepackage[hiragino-pron,deluxe,expert,bold]{luatexja-preset} ¥usepackage{amsmath,xcolor} ¥makeatletter ¥newcommand{¥subscripts}[3]{% ¥@mathmeasure¥z@¥displaystyle{#2}% ¥global¥setbox¥@ne¥vbox to¥ht¥z@{}¥dp¥@ne¥dp¥z@ ¥setbox¥tw@¥box¥@ne ¥@mathmeasure4¥displaystyle{¥copy¥tw@_{#1}}% ¥@mathmeasure6¥displaystyle{{#2}_{#3}}% ¥dimen@-¥wd6 ¥advance¥dimen@¥wd4 ¥advance¥dimen@¥wd¥z@ ¥hbox to¥dimen@{}¥mathop{¥kern-¥dimen@¥box4¥box6}% } ¥def¥@seibun#1#2% {% $% ¥subscripts% {¥text{¥textcolor{black!50!white}{#1}}}% {% ¥text% {% ¥textcolor{black!50!white}% {% ¥underline{¥vphantom{bp}¥textcolor{black}{#2}}}% }% }% {}% $% }% ¥def¥S#1{¥@seibun{S}{#1}}% ¥def¥V#1{¥@seibun{V}{#1}}% ¥def¥O#1{¥@seibun{O}{#1}}% ¥def¥C#1{¥@seibun{C}{#1}}% ¥def¥M#1{¥@seibun{M}{#1}}% ¥def¥A#1{¥@seibun{A}{#1}}% ¥def¥kM#1{¥@seibun{¥ajKakkoAlph{13}}{#1}}% ¥makeatother ¥begin{document} ¥S{He} ¥V{w¥kM{as}} ¥S{あ¥S{い¥kM{うえ¥V{p¥S{お}g}}}} ¥end{document}
添付 スクリーンショット 2022-11-13 9.42.08.png
あ い への返信

Re: 左下に添え字

- あ い の投稿
 失礼しました。ソースが改行されていませんでした。
 以下がtex fileです。
あ い への返信

Re: 左下に添え字

- 大熊 一弘 の投稿
emath を用いる例です。

下線の左端に,下線記号とでもいったものを付与する機能を用います。

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\documentclass{jlreq}
\usepackage[notMy]{emath}
\usepackage{emkasen}
\newbox\myboxi
\newbox\myboxii
\newbox\myboxiii
\newbox\myboxiv

\begin{document}
\kasenkigoufont{\scriptsize}%
\kasenkigoulcr{*}%
\kasenkigousep{-.45em}%
\def\kakko#1{\smash[b]{(#1)}}%
%\ulineposition{-4pt}%
%
\emkasen{He} %
%
\setbox\myboxi=\hbox{\emkasen*{as}}%
\emkasen*{w \copy\myboxi}%
%
\setbox\myboxi=\hbox{\emkasen*{お}}%
\setbox\myboxii=\hbox{\emkasen*{p \copy\myboxi\ g}}%
\setbox\myboxiii=\hbox{\emkasen*{うえ \copy\myboxii}}%
\setbox\myboxiv=\hbox{\emkasen*{い \copy\myboxiii}}%
\emkasen*{あ \copy\myboxiv}
\end{document}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


我田引水が過ぎましたか。

では,emath とは無関係の方法も。
amsmath に,演算子の
左上   右上
   演算子
 左下   右下
4か所に添え字を添付するコマンド \sideset があります。
それを用います(左下だけですが.....)。

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\documentclass{jlreq}
\usepackage{amsmath}

\begin{document}
\ensuremath{\displaystyle
\sideset{_a}{}{\mathop{\underline{\mbox{AAA}{ }%
\sideset{_b}{}{\mathop{\underline{\mbox{BBB}{ }%
\sideset{_c}{}{\mathop{\underline{\mbox{CCC}{ }%
\sideset{_d}{}{\mathop{\underline{\mbox{DDD}{ }%
\sideset{_e}{}{\mathop{\underline{\mbox{EEE}{ }%
}}}\mbox{g}}}}}}}}}}}}}}
\end{document}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
大熊 一弘 への返信

Re: 左下に添え字

- 北見 けん の投稿
あ い さんがウェブサイトから拾ってきたマクロ自体、
大熊さんが紹介している \sideset を改造したもののようですね。

しかし あ い さんのマクロに使うだけならもっと簡略化できるようです。
もとの あ い さんのマクロを次のようにすると、
組版結果を変えずに動作だけが軽くなるようでした。
\newcommand{\subscripts}[3]{%
  \@mathmeasure\z@\displaystyle{#2}%
  \null\mathop{\displaystyle\mathord{\vrule width0pt depth\dp\z@}_{#1}\box\z@_{#3}}%
}
例では #3 も使っていないようなので、省いても良いのかもしれません。
北見 けん への返信

Re: 左下に添え字

- あ い の投稿
大熊 一弘さま,北見 けんさま,丁寧な返信ありがとうございます。

提示していただいた合わせて3つのマクロはすべて希望の結果を得ることができました。

emkasenを使用した例が1番早いですが,どのsetboxを使用するかを自動で行う方法がわからないので,当面は北見さまのマクロを使用し,余裕ができたらemkasenの例でも試してみようと思います。