texjporg / jsclasses

Classes tailored for use with Japanese.
BSD 2-Clause "Simplified" License
61 stars 13 forks source link

minijs: ver@jsarticle.cls の定義の問題 #17

Closed zr-tex8r closed 8 years ago

zr-tex8r commented 8 years ago

現状の minijs.sty には

\expandafter\def\csname ver@jsarticle.cls\endcsname{minijs}

という行があります(恐らく JS クラスが読込済と装うため)が、この値 minijs は「正しいバージョンの形式(日付から始める)」になっていません。そのため、次のようなコードでエラーになります。

\documentclass[a4paper]{article}
\usepackage{minijs}
\makeatletter %!!!!!!!!!!!!!!!!!!!!!!!!! TeX code BEGIN
\@ifclassloaded{jsarticle}{%
  \@ifclasslater{jsarticle}{2001/01/01}%
    {\typeout{New}}{\typeout{Old}}%
}{\typeout{No}}
\makeatother  %!!!!!!!!!!!!!!!!!!!!!!!!! TeX code END
\begin{document}
[\TeX} is pretty アレ!
\end{document}
aminophen commented 8 years ago

私のところのブランチ最新版では直したつもり…だったのですが、日付にしないといけなかったですね。あとで直します(が、どう直すのがよいでしょう?)

zr-tex8r commented 8 years ago

もともと「偽装」であり \@ifclasslater みたいな“細かい質問”に真っ当に答えられるわけがないので、 「1980/01/01」のように「とても古い日付」にするか 「2100/01/01」のように「とても新しい日付」にするか、 のどちらかでしょう。

aminophen commented 8 years ago

単純に

\expandafter\def\csname ver@jsarticle.cls\endcsname{}

とすれば OLD になるのでそれがよいかも…?

zr-tex8r commented 8 years ago

(latex.ltx)

\def\@ifl@t@r#1#2{%
  \ifnum\expandafter\@parse@version#1//00\@nil<%
        \expandafter\@parse@version#2//00\@nil
    \expandafter\@secondoftwo
  \else
    \expandafter\@firstoftwo
  \fi}
\@onlypreamble\@ifl@t@r
\def\@parse@version#1/#2/#3#4#5\@nil{#1#2#3#4 }
\@onlypreamble\@parse@version

なるほど! 「空」は通るんですね!