pLaTeX2e / upLaTeX2e コミュニティ版 2017/10/28

pLaTeX2e / upLaTeX2e コミュニティ版 2017/10/28

- aminophen の投稿
返信数: 16
pLaTeX2e 2017/10/28 と upLaTeX2e 2017/10/28u01 をリリースしました。
今回は以下の修正が入っています:

[1] LaTeX2e との互換性向上
* \ref の結果が英大文字の場合のスペースファクターを考慮
(従来は,例えば see Appendix A. の A. を \ref で取得した場合,
その後が文末空白にならなかった)
* \verb+ abc+ のように最初が半角空白の場合,それを行頭に書くと
空白が消滅していたのを修正
* \textbf などの書体変更命令で,その直前との間にイタリック補正が
入らなかったのを修正
[2] tabbing 環境の各行の最初の項目が始め括弧類などで始まる場合に
入っていた JFM グルーを抑制
[3] \inhibitglue の省略形命令 \< が段落頭(垂直モード)でも効くように改良

いつものように pLaTeX ニュースの PDF 版 (plnewsc*pdf) が
https://drive.google.com/folderview?id=0B6Eau41oUFv-V25oeUc1ckxvd2s&usp=sharing
にあります。今回のものは plnewsc08.pdf です。
aminophen への返信

Re: pLaTeX2e / upLaTeX2e コミュニティ版 2017/10/28

- Ando Ryoya の投稿
仕様であるかの確認なのですが,今回のアップデートを適用してから
\ref命令を数式モード内で使用した場合,
You can't use `\spacefactor' in math mode.
エラーがでるようになりました.次のコードで再現します.

\documentclass[uplatex,dvipdfmx]{jsarticle}

\begin{document}

\section{A}\label{A}


\section{B}

$\ref{A}$

\end{document}

確認よろしくお願いします.

Ando Ryoya への返信

Re: pLaTeX2e / upLaTeX2e コミュニティ版 2017/10/28

- aminophen の投稿
> \ref命令を数式モード内で使用した場合,
> You can't use `\spacefactor' in math mode.

報告ありがとうございます。
\ref を数式モード内で使用することは,想定していませんでした。
(個人的には,数式内で \ref が必要な状況を思いつかない…)
想定すべきだとすれば,これはバグということになります。
LaTeX と違う挙動でもあるので,対策を考えます。
aminophen への返信

Re: pLaTeX2e / upLaTeX2e コミュニティ版 2017/10/28

- gyaman の投稿
今回のアップデートから同じくエラーになりました。
! You can't use `\spacefactor' in math mode.
ですので、同じ理由だと思います。
こちらでは、図・表の番号をページ番号とともに使用しています。
その中での改行を嫌って
($\autoref{fig:xxx}~on~\autopageref{fig:xxx}$)
他によい方法があるのかもしれませんが、
このような感じで使用しています。

よろしくお願いします。

gyaman への返信

Re: pLaTeX2e / upLaTeX2e コミュニティ版 2017/10/28

- 前田 一貴 の投稿
> ($\autoref{fig:xxx}~on~\autopageref{fig:xxx}$)

数式モードにする理由は何かあるのでしょうか?
前田 一貴 への返信

Re: pLaTeX2e / upLaTeX2e コミュニティ版 2017/10/28

- gyaman の投稿
私だけの事情だとは思いますが、
org-mode が好きだ。
TeX は書けない。
なので、org-mode から export させています。

=== org-mode ===
1. Figure template. Fig. [[fig:xxx]] is here.
($\autoref{fig:xxx}~on~\autopageref{fig:xxx}$)
(\autoref{fig:xxx}~on~\autopageref{fig:xxx})
#+CAPTION: xxx
#+NAME: fig:xxx
#+ATTR_LaTeX: :width 10truecm :float wrap :placement {r}{0.4\textwidth} :options angle=360
[[file:css/usavich.png]]
=================

===== export ======
\item Figure template. Fig. \ref{fig:xxx} is here.
(\(\autoref{fig:xxx}~on~\autopageref{fig:xxx}\))
(\autoref{fig:xxx}\textasciitilde{}on\textasciitilde{}\autopageref{fig:xxx})
\begin{wrapfigure}{r}{0.4\textwidth}
\centering
\includegraphics[angle=360,width=10truecm]{css/usavich.png}
\caption{\label{fig:xxx}
xxx}
\end{wrapfigure}
\end{enumerate}
=============

という感じです。
gyaman への返信

Re: pLaTeX2e / upLaTeX2e コミュニティ版 2017/10/28

- 前田 一貴 の投稿
なるほど,\textasciitilde{} に置換されてしまうので回避策ですか.

\def~{\nobreakspace{}} なので,これを代わりに使う手がありそうですが,
長くて面倒ですね.山本さんの提案通り,\mbox{} に入れるのが手軽かもしれません.
前田 一貴 への返信

Re: pLaTeX2e / upLaTeX2e コミュニティ版 2017/10/28

- gyaman の投稿
($\text{\autoref{fig:xxx}~on~\autopageref{fig:xxx}}$)
とする事で、エラーを出さないようになりました。

ありがとうございました。




aminophen への返信

Re: pLaTeX2e / upLaTeX2e コミュニティ版 2017/10/28

- aminophen の投稿
本題の「\ref を数式モード内で使用するとエラー」に対策するかどうかは,
https://github.com/texjporg/platex/issues/55
で考え始めました。
Ando Ryoya への返信

Re: pLaTeX2e / upLaTeX2e コミュニティ版 2017/10/28

- Yamamoto Munehiro "munepi" の投稿
(このご投稿は,本件の再現例のご提示だと思いますけれども,)

通常,数式モード中に数式でない文字列は,\mbox なり,amsmathパッケージを前提とするのであれば,\text なりで,囲うと思います。

\documentclass[uplatex,dvipdfmx]{jsarticle}
\begin{document}
\section{A}\label{A}

\section{B}
$\mbox{\ref{A}}$
\end{document}


\documentclass[uplatex,dvipdfmx]{jsarticle}
\usepackage{amsmath}
\begin{document}
\section{A}\label{A}

\section{B}
$\text{\ref{A}}$
\end{document}


\documentclass[uplatex,dvipdfmx]{jsarticle}
\usepackage{hyperref}
\usepackage{amsmath}
\begin{document}
\section{A}\label{A}

\section{B}
$\text{\ref{A}}$

$\text{\autoref{A} on \autopageref{A}}$
\end{document}

ひとまず,workaround として,\mbox, \text で囲えば良さそうです。
Yamamoto Munehiro "munepi" への返信

Re: pLaTeX2e / upLaTeX2e コミュニティ版 2017/10/28

- Ando Ryoya の投稿
すいません,ふと疑問に思ったもので,あたらしくトピックを立てるほどでもないと思いましたのでここに質問させていただきます.
数式モード内にテキストを含める際には/mboxなどを用いよ,とされているので,逆に
$(数式)テキスト(数式)$とした場合,どのような問題点が発生するのでしょうか?
テキストが欧文であれば書体が変更されるなどの問題が発生しますが,試してみたところ和文においては特に問題は感じられません.(内部処理が大変なことになっているのかもしれませんが)
Ando Ryoya への返信

Re: pLaTeX2e / upLaTeX2e コミュニティ版 2017/10/28

- 前田 一貴 の投稿
今の疑問にぴったりかはわかりませんが,1つの例です.
たまに面倒だからといって本文を全て数式モードに入れる学生さんがいますが,
そういうのは禁則処理が効かなくて句読点が行頭に来るので見ればわかります.
例えば下をお試し下さい.数式モードだと最後の読点の前に改行が入ってしまいます.

\documentclass[uplatex,dvipdfmx]{jsarticle}
\usepackage[width=10zw]{geometry}
\begin{document}
\noindent
ああああああああああ.

\noindent
$ああああああああああ.$
\end{document}
Ando Ryoya への返信

Re: pLaTeX2e / upLaTeX2e コミュニティ版 2017/10/28

- aminophen の投稿
> 逆に $(数式)テキスト(数式)$とした場合,
> どのような問題点が発生するのでしょうか?
> テキストが欧文であれば書体が変更されるなどの問題が発生しますが,
> 試してみたところ和文においては特に問題は感じられません.

内部処理の観点からは,数式モード中で使われた和文文字は「数式アルファベット」として
取り扱われています。そもそも,
「数式内で \mbox や \text なしでも直に和文を書くことができる」
という処理が可能なのは,
「jsarticle 等の多くの日本語クラスのデフォルトが
enablejfam だから」
にすぎません。
(もしご存じなければ Google で enablejfam や disablejfam で検索。)

したがって,和文に見えるけれどもそれはアルファベット(=欧文)と同等に扱われます。
たとえば,TeX Live 2016 かそれより新しい環境では

\documentclass{jsarticle}
\begin{document}
\ybaselineshift10pt
$a\hbox{あ}$\par
$aあ$\par
\end{document}

の一段落目と二段落目で違いが現れます。
aminophen への返信

Re: pLaTeX2e / upLaTeX2e コミュニティ版 2017/10/28

- Ando Ryoya の投稿
なるほど,納得いたしました.私自身,過去には
「なので,~$数式$において,以下が成立.」
とすべきところを
「$なので,~数式において,~以下が成立.$」
などとしていた事がありますので耳が痛いです.(理由は"~"を$の前の","には挿入する必要があり,それ以外ではする必要がない,という区別をすることが面倒くさかったというだけのくだらないことだったのですが…)
aminophen への返信

Re: pLaTeX2e / upLaTeX2e コミュニティ版 2017/10/28

- aminophen の投稿
> \ref命令を数式モード内で使用した場合,
> You can't use `\spacefactor' in math mode.

という現象ですが,pLaTeX2e <2017/10/28>+1 及び upLaTeX2e <2017/10/28u01>+1 にて
対処を施し,いま CTAN へのアップロード作業をしました。
aminophen への返信

Re: pLaTeX2e / upLaTeX2e コミュニティ版 2017/10/28

- aminophen の投稿
今日の TeX Live / W32TeX の更新に,
pLaTeX2e と upLaTeX2e のアップデートが載りました。
それぞれ platex-en.pdf,uplatex-en.pdf という英語版ドキュメントを
追加したのと,platexrelease パッケージ(古いバージョンとの互換性エミュレーター)の
内部コードの改良くらいで,組版に関しての変更は入れていません。

今回のリリース <2017/10/28>+3 をもって,TeX Live 2017 の期間中は更新を凍結するつもりでいます。
次回 2018 で出すときは,uplatex と platex のコードを一本化してしまおうかと模索しています。
(従来は互いに独立だったので,uplatex だけでも uplatex フォーマットを作ることが
できましたが,今後は uplatex フォーマットを作るために platex が必要になる,ということ。)
ユーザレベルでは違いが見えないことだと思いますが,何か懸念があればご意見をください。
aminophen への返信

Re: pLaTeX2e / upLaTeX2e コミュニティ版 2017/10/28

- aminophen の投稿
以下のソースで \nolinebreak が効かない現象を直すために
pLaTeX2e <2017/10/28>+4 を出しました。

\documentclass{jsarticle}
\begin{document}

ああああああああああ
ああああああああああ
ああああああああああ
ああああああああああ
ああああああああ\nolinebreak ん

\end{document}