現在以下のような設定ですが、上記のU+1E2Bなどが使用できません
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage[utf8]{inputenc}
%\usepackage[utf8x]{inputenc}
\usepackage[prefernoncjk]{pxcjkcat}
\usepackage{extaccent,DeclareUnicode}
\usepackage[schinese,japanese]{pxbabel}
設定方法などについてご教示をおねがいします
pdfになればいいのでコマンドで表記する方法でもかまいません
不得手な問題ですが&「 ḫ」だけですが、
semtrans.sty でとりあえずは出力可能です。
(「Breve Below LaTeX」で検索してみました)
UNICODE 直でのご希望でしたら、また考えてみます。
( uplatex でなく lualatex でしたらUNICODE 直でも容易に可能です)
なお semtrans.sty を見ると以下のようなコマンドがあるとのこと。
% The following commands are defined:
% \Alif, \Ayn left and right half ring
% \U breve below (e. g. \U h)
% \D diaeresis below (e. g. \D d: Oromo retroflex d)
% \T turn a letter (e. g. \T e: schwa)
% For the turning of letters, the package fraphicx is required.
以下を保存し 「ptex2pdf -l ファイル名」か「llmk ファイル名」で
pdf 作成可能です。
%#! ptex2pdf -l -u
\documentclass[uplatex]{jlreq}
% 直接は関係はないが 参考にしたページ
% https://tex.stackexchange.com/questions/371759/breve-under-letter-is-not-in-italics-when-using-textit
% breve under letter is not in italics when using \textit
\usepackage{semtrans}
\begin{document}
ラテン語の小文字Hとその下のブレーベ \dotfill \U{h}
\end{document}
semtrans.sty でとりあえずは出力可能です。
(「Breve Below LaTeX」で検索してみました)
UNICODE 直でのご希望でしたら、また考えてみます。
( uplatex でなく lualatex でしたらUNICODE 直でも容易に可能です)
なお semtrans.sty を見ると以下のようなコマンドがあるとのこと。
% The following commands are defined:
% \Alif, \Ayn left and right half ring
% \U breve below (e. g. \U h)
% \D diaeresis below (e. g. \D d: Oromo retroflex d)
% \T turn a letter (e. g. \T e: schwa)
% For the turning of letters, the package fraphicx is required.
以下を保存し 「ptex2pdf -l ファイル名」か「llmk ファイル名」で
pdf 作成可能です。
%#! ptex2pdf -l -u
\documentclass[uplatex]{jlreq}
% 直接は関係はないが 参考にしたページ
% https://tex.stackexchange.com/questions/371759/breve-under-letter-is-not-in-italics-when-using-textit
% breve under letter is not in italics when using \textit
\usepackage{semtrans}
\begin{document}
ラテン語の小文字Hとその下のブレーベ \dotfill \U{h}
\end{document}
私の手元のシステムは W32TeX [2020/07/19] と古いので、最近の
システムでも同じ結果になるのかどうか分からないのですけれど、
以下のようにしてみましたら、一応出力は出来ました。
(でも、Latin Modern には当該グリフがあるはずなのですが、この
方法だと単一のグリフではなくて、合成グリフになるみたいです…)
\documentclass[uplatex,dvipdfmx]{jsarticle}
\usepackage{lmodern}
\usepackage{ucs}
\usepackage[utf8x]{inputenc}
\begin{document}
\unichar{7723}
\textit{\unichar{7723}}
\textbf{\unichar{7723}}
\textit{\bfseries\unichar{7723}}
\end{document}
システムでも同じ結果になるのかどうか分からないのですけれど、
以下のようにしてみましたら、一応出力は出来ました。
(でも、Latin Modern には当該グリフがあるはずなのですが、この
方法だと単一のグリフではなくて、合成グリフになるみたいです…)
\documentclass[uplatex,dvipdfmx]{jsarticle}
\usepackage{lmodern}
\usepackage{ucs}
\usepackage[utf8x]{inputenc}
\begin{document}
\unichar{7723}
\textit{\unichar{7723}}
\textbf{\unichar{7723}}
\textit{\bfseries\unichar{7723}}
\end{document}
先日の投稿で:
> Latin Modern には当該グリフがあるはずなのですが、
と書きましたが、その後、lmr10.afm を覗いてみましたら:
C -1 ; WX 555.55556 ; N hbrevebelow ; B 32 -233 535 694 ;
という行がありました。
ちゃんと PostScript 名が入っていたので、それなら、enc にこの
名前を書いて tfm を作ったら、合成じゃない当該グリフにもアク
セスできるんじゃないかと思ってやってみましたら、無事うまく
いきました。
でも、実際に必要なグリフは U+1E2B 一文字だけではないでしょう
から、256 文字の軛の中で悪戦苦闘するよりも、XeTeX や LuaTeX
を使ったほうがいいんだろうな、とも思います。
> Latin Modern には当該グリフがあるはずなのですが、
と書きましたが、その後、lmr10.afm を覗いてみましたら:
C -1 ; WX 555.55556 ; N hbrevebelow ; B 32 -233 535 694 ;
という行がありました。
ちゃんと PostScript 名が入っていたので、それなら、enc にこの
名前を書いて tfm を作ったら、合成じゃない当該グリフにもアク
セスできるんじゃないかと思ってやってみましたら、無事うまく
いきました。
でも、実際に必要なグリフは U+1E2B 一文字だけではないでしょう
から、256 文字の軛の中で悪戦苦闘するよりも、XeTeX や LuaTeX
を使ったほうがいいんだろうな、とも思います。
# 結局、合成グリフにはなってしまいますが。
https://tex.stackexchange.com/questions/371759/breve-under-letter-is-not-in-italics-when-using-textit
というページを見てみました。
元々、plain.tex では以下のような "bar-under accent" というコ
マンドが定義されていました:
\def\b#1{{\o@lign{\relax#1\crcr\hidewidth\sh@ft{-3ex}%
\vbox to.2ex{\hbox{\char22}\vss}\hidewidth}}}
それで、semtrans.sty [1998/02/10 v 1.0] では、これを模して:
\newcommand*\U[1]{\oalign{#1\crcr\hidewidth
\vbox to .2ex{\hbox{\u{}}\vss}\hidewidth}}
というコマンドを定義しているようです。
ところが、両者を比べてみますと、\b に含まれている \sh@ft{-3ex}
に相当する部分が semtrans.sty の \U にはありません。
そのせいで、semtrans.sty で \textit{\U{h}} とすると、breve が
ズレてしまうのでどうしたらよいか、というのが質問の趣旨のよう
です。
対処法としては、元々 plain.tex でもそうしているように \sh@ft
を使って補正をすればよいわけですが、LaTeX では plain.tex とは
違う実装の \sh@ft を定義していて、更には、LaTeX 版の \sh@ft
である \ltx@sh@ft も用意されているので、それを使えばよい、と
いう回答がなされています。
LaTeX での \b の定義は:
ot1enc.def:
\DeclareTextCommand{\b}{OT1}[1]
{\hmode@bgroup\o@lign{\relax#1\crcr\hidewidth\ltx@sh@ft{-3ex}%
\vbox to.2ex{\hbox{\char22}\vss}\hidewidth}\egroup}
t1enc.def:
\DeclareTextCommand{\b}{T1}[1]
{\hmode@bgroup\o@lign{\relax#1\crcr\hidewidth\ltx@sh@ft{-3ex}%
\vbox to.2ex{\hbox{\char9}\vss}\hidewidth}\egroup}
なので、これらに倣って、\U の定義としては、例えばデフォルトの
OT1 の場合であれば:
\makeatletter
\DeclareTextCommand{\U}{OT1}[1]
{\hmode@bgroup\o@lign{\relax#1\crcr\hidewidth\ltx@sh@ft{-3ex}%
\vbox to.2ex{\hbox{\u{}}\vss}\hidewidth}\egroup}
\makeatother
とすればよい、というのが結論のようです。
(もちろん、"The simplest way these days is probably to use
xelatex or lualatex." とも回答されていますが)
\documentclass[uplatex,dvipdfmx]{jsarticle}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\makeatletter
\DeclareTextCommand{\U}{T1}[1]
{\hmode@bgroup\o@lign{\relax#1\crcr\hidewidth\ltx@sh@ft{-3ex}%
\vbox to.2ex{\hbox{\u{}}\vss}\hidewidth}\egroup}
\makeatother
\begin{document}
\U{h}
\textit{\U{h}}
\textbf{\U{h}}
\textit{\bfseries\U{h}}
\end{document}
https://tex.stackexchange.com/questions/371759/breve-under-letter-is-not-in-italics-when-using-textit
というページを見てみました。
元々、plain.tex では以下のような "bar-under accent" というコ
マンドが定義されていました:
\def\b#1{{\o@lign{\relax#1\crcr\hidewidth\sh@ft{-3ex}%
\vbox to.2ex{\hbox{\char22}\vss}\hidewidth}}}
それで、semtrans.sty [1998/02/10 v 1.0] では、これを模して:
\newcommand*\U[1]{\oalign{#1\crcr\hidewidth
\vbox to .2ex{\hbox{\u{}}\vss}\hidewidth}}
というコマンドを定義しているようです。
ところが、両者を比べてみますと、\b に含まれている \sh@ft{-3ex}
に相当する部分が semtrans.sty の \U にはありません。
そのせいで、semtrans.sty で \textit{\U{h}} とすると、breve が
ズレてしまうのでどうしたらよいか、というのが質問の趣旨のよう
です。
対処法としては、元々 plain.tex でもそうしているように \sh@ft
を使って補正をすればよいわけですが、LaTeX では plain.tex とは
違う実装の \sh@ft を定義していて、更には、LaTeX 版の \sh@ft
である \ltx@sh@ft も用意されているので、それを使えばよい、と
いう回答がなされています。
LaTeX での \b の定義は:
ot1enc.def:
\DeclareTextCommand{\b}{OT1}[1]
{\hmode@bgroup\o@lign{\relax#1\crcr\hidewidth\ltx@sh@ft{-3ex}%
\vbox to.2ex{\hbox{\char22}\vss}\hidewidth}\egroup}
t1enc.def:
\DeclareTextCommand{\b}{T1}[1]
{\hmode@bgroup\o@lign{\relax#1\crcr\hidewidth\ltx@sh@ft{-3ex}%
\vbox to.2ex{\hbox{\char9}\vss}\hidewidth}\egroup}
なので、これらに倣って、\U の定義としては、例えばデフォルトの
OT1 の場合であれば:
\makeatletter
\DeclareTextCommand{\U}{OT1}[1]
{\hmode@bgroup\o@lign{\relax#1\crcr\hidewidth\ltx@sh@ft{-3ex}%
\vbox to.2ex{\hbox{\u{}}\vss}\hidewidth}\egroup}
\makeatother
とすればよい、というのが結論のようです。
(もちろん、"The simplest way these days is probably to use
xelatex or lualatex." とも回答されていますが)
\documentclass[uplatex,dvipdfmx]{jsarticle}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\makeatletter
\DeclareTextCommand{\U}{T1}[1]
{\hmode@bgroup\o@lign{\relax#1\crcr\hidewidth\ltx@sh@ft{-3ex}%
\vbox to.2ex{\hbox{\u{}}\vss}\hidewidth}\egroup}
\makeatother
\begin{document}
\U{h}
\textit{\U{h}}
\textbf{\U{h}}
\textit{\bfseries\U{h}}
\end{document}
# 実務的にはまったくもってどうでもいい訂正です。
上の投稿では:
plain.tex (\b) ---> semtrans.sty (\U)
とか適当なことを書いてしまいましたが、もうちょっとちゃんと確認
してみましたら、実際のところは:
plain.tex (\b) ---> lplain.tex (\b) ---> exotex.tex (\U) ---> semtrans.sty (\U)
という流れだったみたいです…。
------------------------------------------------------------
(1) plain.tex [1978?/1982?--]
\def\b#1{{\o@lign{\relax#1\crcr\hidewidth\sh@ft{-3ex}%
\vbox to.2ex{\hbox{\char22}\vss}\hidewidth}}}
------------------------------------------------------------
(2) LaTeX2.09: lplain.tex [1985?--1992]
\def\pb#1{\oalign{#1\crcr\hidewidth
\vbox to.2ex{\hbox{\char22}\vss}\hidewidth}}
\def\b{\protect\pb}
------------------------------------------------------------
(3) exotex.tex [1988]
% Input-File EXOTEX.TEX (V 0.4) (c) Peter J. Olivier, Frankfurt 1988
% Letzte Aenderung: 8.8.88 (OL) (auf Atari ST)
\def\U#1{\oalign{#1\crcr\hidewidth
\kern-.4em \vbox to .2ex{\hbox{\char'25}\vss}\hidewidth}}
------------------------------------------------------------
(4) LaTeX2e: ltoutenc.dtx [1993--]
\DeclareTextCommand{\b}{OT1}[1]
{\hmode@bgroup\o@lign{\relax#1\crcr\hidewidth\ltx@sh@ft{-3ex}%
\vbox to.2ex{\hbox{\char22}\vss}\hidewidth}\egroup}
\DeclareTextCommand{\b}{T1}[1]
{\hmode@bgroup\o@lign{\relax#1\crcr\hidewidth\ltx@sh@ft{-3ex}%
\vbox to.2ex{\hbox{\char9}\vss}\hidewidth}\egroup}
------------------------------------------------------------
(5) semtrans.sty [1997]
% (\textcopyleft) Copyleft 1997 J"org Knappen
% Alif, Ayn and \U are from the exotex package by Peter S. Olivier
% 1988/08/08
% Definitions translated into LaTeX2e by JK
\newcommand*\U[1]{\oalign{#1\crcr\hidewidth
\vbox to .2ex{\hbox{\u{}}\vss}\hidewidth}}
------------------------------------------------------------
(\U を定義するに当たって、plain.tex の \b の定義にあった
\o@lign を \oalign に変えたり、\relax や \sh@ft{-3ex} を削っ
たりしているのは、私はてっきり semtrans.sty(や exotex.tex)
がやったことだろうと思ってしまったのですが、どうもこれ
らは 2.09 による変更を踏襲したに過ぎないのであって、他方、
2e の側では plain.tex 相当の定義に戻した、ということのよう
に見えます)
上の投稿では:
plain.tex (\b) ---> semtrans.sty (\U)
とか適当なことを書いてしまいましたが、もうちょっとちゃんと確認
してみましたら、実際のところは:
plain.tex (\b) ---> lplain.tex (\b) ---> exotex.tex (\U) ---> semtrans.sty (\U)
という流れだったみたいです…。
------------------------------------------------------------
(1) plain.tex [1978?/1982?--]
\def\b#1{{\o@lign{\relax#1\crcr\hidewidth\sh@ft{-3ex}%
\vbox to.2ex{\hbox{\char22}\vss}\hidewidth}}}
------------------------------------------------------------
(2) LaTeX2.09: lplain.tex [1985?--1992]
\def\pb#1{\oalign{#1\crcr\hidewidth
\vbox to.2ex{\hbox{\char22}\vss}\hidewidth}}
\def\b{\protect\pb}
------------------------------------------------------------
(3) exotex.tex [1988]
% Input-File EXOTEX.TEX (V 0.4) (c) Peter J. Olivier, Frankfurt 1988
% Letzte Aenderung: 8.8.88 (OL) (auf Atari ST)
\def\U#1{\oalign{#1\crcr\hidewidth
\kern-.4em \vbox to .2ex{\hbox{\char'25}\vss}\hidewidth}}
------------------------------------------------------------
(4) LaTeX2e: ltoutenc.dtx [1993--]
\DeclareTextCommand{\b}{OT1}[1]
{\hmode@bgroup\o@lign{\relax#1\crcr\hidewidth\ltx@sh@ft{-3ex}%
\vbox to.2ex{\hbox{\char22}\vss}\hidewidth}\egroup}
\DeclareTextCommand{\b}{T1}[1]
{\hmode@bgroup\o@lign{\relax#1\crcr\hidewidth\ltx@sh@ft{-3ex}%
\vbox to.2ex{\hbox{\char9}\vss}\hidewidth}\egroup}
------------------------------------------------------------
(5) semtrans.sty [1997]
% (\textcopyleft) Copyleft 1997 J"org Knappen
% Alif, Ayn and \U are from the exotex package by Peter S. Olivier
% 1988/08/08
% Definitions translated into LaTeX2e by JK
\newcommand*\U[1]{\oalign{#1\crcr\hidewidth
\vbox to .2ex{\hbox{\u{}}\vss}\hidewidth}}
------------------------------------------------------------
(\U を定義するに当たって、plain.tex の \b の定義にあった
\o@lign を \oalign に変えたり、\relax や \sh@ft{-3ex} を削っ
たりしているのは、私はてっきり semtrans.sty(や exotex.tex)
がやったことだろうと思ってしまったのですが、どうもこれ
らは 2.09 による変更を踏襲したに過ぎないのであって、他方、
2e の側では plain.tex 相当の定義に戻した、ということのよう
に見えます)
# 悪い癖が出て、独り相撲を始めてしまいました…。
今朝の投稿の plain.tex の \b の定義は、現在の定義であって、元々
は \sh@ft 等が使われていたわけではなかったようです。
つまり、「LaTeX2.09 が \sh@ft 等を削った」というのは間違いで
した… orz。
ざっと確認できた限りでは、LaTeX2.09 の頃の plain.tex の \b の
定義では、\o@lign や \sh@ft は使われてなかったみたいです:
------------------------------------------------------------
LaTeX0.97: lplain.tex [1983/05/12]
\def\b#1{\vtop{\baselineskip0pt\lineskip.25ex
\halign{##\crcr#1\crcr\hidewidth
\vbox to .2ex{\hbox{\char'22}\vss}\hidewidth\crcr}}}
------------------------------------------------------------
LaTeX0.9999: lplain.tex [1983/07/29]
\def\b#1{\oalign{#1\crcr\hidewidth
\vbox to.2ex{\hbox{\char22}\vss}\hidewidth}}
------------------------------------------------------------
LaTeX0.99999: lplain.tex [1983/09/03]
\def\b#1{\oalign{#1\crcr\hidewidth
\vbox to.2ex{\hbox{\char22}\vss}\hidewidth}}
------------------------------------------------------------
LaTeX0.999999: lplain.tex [1983/10/05]
\def\b#1{\oalign{#1\crcr\hidewidth
\vbox to.2ex{\hbox{\char22}\vss}\hidewidth}}
------------------------------------------------------------
LaTeX1.0: lplain.tex [1983/11/10]
\def\b#1{\oalign{#1\crcr\hidewidth
\vbox to.2ex{\hbox{\char22}\vss}\hidewidth}}
------------------------------------------------------------
texman.tex [1987/10/30]
\def\b#1{\oalign{#1\crcr\hidewidth
\vbox to.2ex{\hbox{\char'26}\vss}\hidewidth}}
------------------------------------------------------------
LaTeX2.09: lplain.tex [1992/03/25]
\def\pb#1{\oalign{#1\crcr\hidewidth
\vbox to.2ex{\hbox{\char22}\vss}\hidewidth}}
\def\b{\protect\pb}
------------------------------------------------------------
plain.tex [1995/03/09]
\def\b#1{{\o@lign{\relax#1\crcr\hidewidth\sh@ft{29}%
\vbox to.2ex{\hbox{\char22}\vss}\hidewidth}}}
------------------------------------------------------------
plain.tex [1998/08/12]
\def\b#1{{\o@lign{\relax#1\crcr\hidewidth\sh@ft{-3ex}%
\vbox to.2ex{\hbox{\char22}\vss}\hidewidth}}}
------------------------------------------------------------
今朝の投稿の plain.tex の \b の定義は、現在の定義であって、元々
は \sh@ft 等が使われていたわけではなかったようです。
つまり、「LaTeX2.09 が \sh@ft 等を削った」というのは間違いで
した… orz。
ざっと確認できた限りでは、LaTeX2.09 の頃の plain.tex の \b の
定義では、\o@lign や \sh@ft は使われてなかったみたいです:
------------------------------------------------------------
LaTeX0.97: lplain.tex [1983/05/12]
\def\b#1{\vtop{\baselineskip0pt\lineskip.25ex
\halign{##\crcr#1\crcr\hidewidth
\vbox to .2ex{\hbox{\char'22}\vss}\hidewidth\crcr}}}
------------------------------------------------------------
LaTeX0.9999: lplain.tex [1983/07/29]
\def\b#1{\oalign{#1\crcr\hidewidth
\vbox to.2ex{\hbox{\char22}\vss}\hidewidth}}
------------------------------------------------------------
LaTeX0.99999: lplain.tex [1983/09/03]
\def\b#1{\oalign{#1\crcr\hidewidth
\vbox to.2ex{\hbox{\char22}\vss}\hidewidth}}
------------------------------------------------------------
LaTeX0.999999: lplain.tex [1983/10/05]
\def\b#1{\oalign{#1\crcr\hidewidth
\vbox to.2ex{\hbox{\char22}\vss}\hidewidth}}
------------------------------------------------------------
LaTeX1.0: lplain.tex [1983/11/10]
\def\b#1{\oalign{#1\crcr\hidewidth
\vbox to.2ex{\hbox{\char22}\vss}\hidewidth}}
------------------------------------------------------------
texman.tex [1987/10/30]
\def\b#1{\oalign{#1\crcr\hidewidth
\vbox to.2ex{\hbox{\char'26}\vss}\hidewidth}}
------------------------------------------------------------
LaTeX2.09: lplain.tex [1992/03/25]
\def\pb#1{\oalign{#1\crcr\hidewidth
\vbox to.2ex{\hbox{\char22}\vss}\hidewidth}}
\def\b{\protect\pb}
------------------------------------------------------------
plain.tex [1995/03/09]
\def\b#1{{\o@lign{\relax#1\crcr\hidewidth\sh@ft{29}%
\vbox to.2ex{\hbox{\char22}\vss}\hidewidth}}}
------------------------------------------------------------
plain.tex [1998/08/12]
\def\b#1{{\o@lign{\relax#1\crcr\hidewidth\sh@ft{-3ex}%
\vbox to.2ex{\hbox{\char22}\vss}\hidewidth}}}
------------------------------------------------------------