uline--.styでfontspec

uline--.styでfontspec

- あ い の投稿
返信数: 2

uline--.styをlualatexで用いる際,自前のフォントに下線を引こうとしました。

(uline--.styがlualatex非推奨なのは承知の上です。lua-ul.styは,複数行にわたる日本語文において一文字ずつに引かれている下線間に小さなスペースが空いてしまう+線種が豊富でないために使っていません。

【ソース】

\documentclass{ltjsarticle}

\usepackage{luatexja}

\usepackage{luatexja-fontspec}

\usepackage{luatexja-otf}

\usepackage[hiragino-pron,deluxe,expert,bold]{luatexja-preset}%

\usepackage[usetype1]{uline--}

\newcommand{\mikafamily}{\mikaalph\mikajp}%

  \newfontface{\mikaalph}{みかちゃん.otf}%

  \newjfontface{\mikajp}{みかちゃん.otf}%

  \newcommand{\textmika}[1]{{\mikafamily #1}}%

\begin{document}

\uline{みかmika\textmika{みかmika}みかmika}

\end{document}

(みかちゃんフォント配布元:https://mikachan.osdn.jp/dl.html)

uline--.styには,

\AddCommandInUline\mikaalph[][]{}

\AddCommandInUline\mikajp[][]{}

\AddCommandInUline\mikafamily[][]{}

\AddCommandInUline\textmika[1][]{}

を記述しましたが,所望の結果は得られませんでした。

(エラーは出ず下線も引かれますが,フォントが変わりません

これはuline--.styをlualatexで用いた場合,仕方のないものなのでしょうか。

そうであれば受け入れて使おうと思いますが,もしもやり方に誤りがあればご指摘願います。

よろしくお願いします。

(環境:MacBook / TeXShop / lualatex)

あ い への返信

Re: uline--.styでfontspec

- しっぽ 愛好家 の投稿

ユーザ定義コマンドを(uline-- の)\uline 等の中で使おうという場合には,

  • まず,そのコマンドを何もせずに用いてみて
  • 問題がある場合に限り \AddCommandInUline 等での登録を試みる

ようにしてください. 特に \AddCommandInUline で登録したものは「1 文字扱い」になるので, \newcommand*\myFA{なんらかのとても長い…(中略)…長い文字列} と定義された \myFA のようなものを不用意に登録しては不都合があるでしょう.

次に

uline--.styには,

\AddCommandInUline\mikaalph[][]{}

\AddCommandInUline\mikajp[][]{}

\AddCommandInUline\mikafamily[][]{}

\AddCommandInUline\textmika[1][]{}

を記述しましたが

とありますが,\AddCommandInUline の用法に問題があります. それ以前に,私はそのような改変は許可していません.

uline-- 自体の用法については,次のサンプルも参照してください.

\documentclass{jarticle}
\usepackage[usetype1]{uline--}

\DeclareFontFamily{OT1}{cmff}{}
\DeclareFontShape{OT1}{cmff}{m}{n}{cmff10}{}
\DeclareRobustCommand*\funnyfamily{\romanfamily{cmff}\selectfont}
\DeclareTextFontCommand{\textfunny}{\funnyfamily}
%%% uline-- の古い版では,\uline 等の引数内で \textfunny を直接使えませんが,
%%% そのような版をお使いの場合には,「1 個の引数をとる書体変更コマンド」は
%%%   \AddTextCommandInUline{\textfunny}
%%% のように \AddTextCommandInUline で登録できます.
%%% %%% \AddTextCommandInUline も導入されていない古い版なら……
%%% %%% \romanfamily 等を直接用いてください.

%%% \AddCommandInUline での登録の際には,
%%% マクロ定義を \newcommand で記述した場合を考えて,
%%% 「その定義の冒頭の \newcommand を \AddCommandInUline に変更」し,
%%% 「定義部分は空(もしくは uline-- 用の処理指定)に変更」します
%%% (\AddCommandInUline の直後の * の有無には意味はありません).

\newcommand*\myfont{\funnyfamily}
\AddCommandInUline\myfont{}
%%% これは,「\myfont(引数なし)を(アルファベットの)1 文字扱いにする」設定.
%%% %%% そのため {\myfont This is ...} なら,最初の「単語 or 1文字」として
%%% %%% 「\myfont This」が切り出され,書体変更は「This」のみに
%%% %%% 適用されてしまいます.
%%% %%% {\myfont 吾輩は……} なら,最初の「単語 or 1文字」は「\myfont」だけ
%%% %%% になり,書体変更が反映されなくなります.
%%% この例の場合,むしろ \AddCommandInUline\myfont{} は不要.

% \AddCommandInUline\myfont[]{}
% \AddCommandInUline\myfont[][]{}
%%% これらは,想定外.
%%%
%%% \newcommand\somecommand[]{...} や \newcommand\somecommand[][]{...} は
%%% (少なくとも pLaTeX2e <2018-04-01>+1 (based on LaTeX2e <2018-04-01>
%%% patch level 2) では)エラーとなるはずで,\AddCommandInUline を用いて
%%% 書き換えたときに \AddCommandInUline\somecommand[]{} や
%%% \AddCommandInUline\somecommand[][]{} という形になるのは想定外です.

\newcommand*\mytextfunny[1]{\leavevmode {\funnyfamily #1}}
\AddCommandInUline\mytextfunny[1]{}
%%% これは,「\mytextfunny とその 1 個の引数を 1 文字扱いにする」設定.
%%% この例の場合,むしろ \AddCommandInUline\mytextfunny[1]{} は不要.

%\newcommand*\mytextfunny[1][]{\leavevmode {\funnyfamily #1}}
%\AddCommandInUline\mytextfunny[1][]{}
%%% これは,「\mytextfunny とその 1 個のオプション引数(あれば)を
%%% 1 文字扱いにする」設定.

%%% なお,
%%%   \newcommand{\textmika}[1]{{\mikafamily #1}}%
%%%   %%% これは,\textmika{...} という形式での使用を想定
%%% に対して
%%%   \AddCommandInUline\textmika[1][]{}
%%%   %%% これは,\textmika[...] という形式での使用を想定
%%% という設定をしたのでは,\textmika の引数の書式指定に不整合があります.

\begin{document}
\uline{This is a meaningless sample text.
{\funnyfamily This is a meaningless sample text.
This is a meaningless sample text.}
This is a meaningless sample text.
\textfunny{This is a meaningless sample text.}}

\uline{This is a meaningless sample text.
{\myfont This is a meaningless sample text.
This is a meaningless sample text.}
This is a meaningless sample text.
\mytextfunny{This is a meaningless sample text.}}
\end{document}
しっぽ 愛好家 への返信

Re: uline--.styでfontspec

- あ い の投稿
しっぽ愛好家さま,返信ありがとうございます。
わざわざご説明いただき,大変感謝いたします。

問題ですが,無事に解決することができました。
ありがとうございました。