vwcol.styとutf.styを併用したい

vwcol.styとutf.styを併用したい

by 栃折 成紀 -
Number of replies: 6
vwcol.styとutf.styを併用すると、\ajRoman1などが文字化けします。これをクリアする方法はあるでしょうか?

%test.tex-----------------------------------------
\documentclass{jarticle}
\usepackage{utf}
%\usepackage{vwcol}

\begin{document}

\ajRoman3
\ajRoman1

\end{document}
In reply to 栃折 成紀

Re: vwcol.styとutf.styを併用したい

by aminophen -
vwcol.sty は ragged2e.sty を読み込んでいて、それはさらに everysel.sty を内部で
読み込んでいます。そして、everysel.sty が内部で \selectfont の定義を変更していますね。
なので以下のソースでも文字化けします。

\documentclass{jarticle}
\usepackage{utf}
\usepackage{everysel}
\begin{document}
\ajRoman3
\ajRoman1
\end{document}

根は qa:34729 と同じようです。
空の ragged2e.sty と everysel.sty を作成してしまえば

LaTeX Warning: Command \selectfont has changed.
Check if current package is valid.

という警告を消すことができますが、それで vwcol.sty のほうが正常に動くかは知りません。
ちなみに utf.sty は古いので、代わりに otf.sty を使ってテストしました。\usepackage{otf}
In reply to aminophen

Re: vwcol.styとutf.styを併用したい

by 栃折 成紀 -

ありがとうございます。

空の ragged2e.sty と everysel.sty を作成すると字化けしなくなりましたが、

vwcol環境が記述されているとエラーになります。併用は難しそうでしょうか。

%test.tex---------------------------------------------------------------------------------

\documentclass{jarticle}
\usepackage[dvipdfmx]{graphicx,color}
\usepackage{utf}
\usepackage{vwcol}

\begin{document}

\begin{vwcol}[widths={.65,.35},rule=0pt,sep=.1]
aaaaaaaaaaaa

bbbbbbbbbbbbbbbbbbb
\end{vwcol}

\end{document}

In reply to 栃折 成紀

Re: vwcol.styとutf.styを併用したい

by aminophen -
vwcol.sty が ragged2e.sty を読み込んでいる理由は、LaTeX 本体の \raggedright の
不都合な仕様を回避するためだということが、vwcol.sty のマニュアルに書かれています。
コマンドラインから
texdoc vwcol
と入力すると vwcol.pdf というマニュアルを読むことができます。
(あるいは vwcol.pdf でググると同じものが Web で出てきます)

ragged2e.sty の \RaggedRight は挙動が改善されているので vwcol.sty はこれを使いたいのですが、
ragged2e.sty を空にした結果、vwcol.sty が必要な \RaggedRight が未定義になってしまいます。
これがエラーの原因ですので、LaTeX 本体で定義された(ちょっと不都合な)\raggedright を
\RaggedRight という名前にコピーしてしまえば未定義でなくなり、エラーが消えます。
(が、当然ながらマニュアルに書いてある不都合が起こりますので自己責任で。)

先ほど作っていただいた空の ragged2e.sty と everysel.sty は今回も使います。

\documentclass{jarticle}
\let\RaggedRight\raggedright\relax
\usepackage{utf}
\usepackage{vwcol}

これで一応共存させることはできます。
In reply to aminophen

Re: vwcol.styとutf.styを併用したい

by 栃折 成紀 -

ありがとうございます。

\let\RaggedRight\raggedright\relax


\usepackage{vwcol}

より前に置き、空のragged2e.styを配置すればうまくいきました。

> 当然ながらマニュアルに書いてある不都合が起こりますので

が心配ですが、今のところ併用できた形になりました。

In reply to aminophen

Re: vwcol.styとutf.styを併用したい

by 前田 一貴 -
空ファイルを準備するというのは解決策としてどうかと思うので,
以下のようにするとどうでしょうか.

everysel がやっている \selectfont の書き換えというのは,\EverySelectfont 用のフックを
\selectfont の最後の方に入れるだけのように見えます.
これが pLaTeX の \selectfont の定義を上書きしてしまうことが問題なので,
pLaTeX の \selectfont の定義を保存しておいて,
everysel による変更のあとでフックを追加したものに差し替えます.
フックを追加する場所が問題なのですが,とりあえず \size@update の前にしてみます.

(私も utf.sty が手元にないので,代わりに otf.sty でテストしました.)


\documentclass{jarticle}
\usepackage{otf}
\usepackage{etoolbox}
\makeatletter
\expandafter\let\expandafter\op@selectfont\csname selectfont \endcsname
\patchcmd{\op@selectfont}{\size@update}{%
  \@EverySelectfont@EveryHook
  \@EverySelectfont@AtNextHook
  \gdef\@EverySelectfont@AtNextHook{}%
  \size@update}{}{}
\usepackage{vwcol}
\AtBeginDocument{\expandafter\let\csname selectfont \endcsname\op@selectfont}
\makeatother
\begin{document}
\ajRoman3
\ajRoman1
\end{document}
In reply to 前田 一貴

Re: vwcol.styとutf.styを併用したい

by 栃折 成紀 -

ありがとうございます。こちらの方法でも成功しました。

こちらの方が副作用がなさそうなので、使わせていただいています。

ありがとうございます。