• R/O
  • HTTP
  • SSH
  • HTTPS

Commit

Tags
No Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

ソースコードの管理場所


Commit MetaInfo

Revision3d5cee68961b97a658514c0cbebed41df1c50ff7 (tree)
Time2015-03-03 14:47:22
AuthorHironori Kitagawa <h_kitagawa2001@yaho...>
CommiterHironori Kitagawa

Log Message

Cherry-picked several commits from kitagawa_tfont branch

c021eb1 - Wed Dec 3 16:06:58 2014 +0900: match option in luatexja-preset.sty.
8156de2 - Wed Dec 3 16:27:15 2014 +0900: updated manuals
96f2016 - Wed Dec 24 21:54:57 2014 +0900: ltjsclasses: \@setfontsize should not set xkanjiskip if
xkanjiskip<=0
fe9ceab - Wed Jan 7 11:06:52 2015 +0900: lltjp-listings.sty: fix \lstinline@
b4be058 - Wed Jan 7 11:19:19 2015 +0900: ... and more
117099f - Thu Jan 8 21:23:52 2015 +0900: lltjp-listings.sty: added 'doubleletterspace' key.
ec6db6e - Fri Jan 9 10:29:29 2015 +0900: Manual: added doubleletterspace key.

Change Summary

Incremental Difference

Binary files a/doc/ltjsclasses.pdf and b/doc/ltjsclasses.pdf differ
--- a/doc/luatexja.dtx
+++ b/doc/luatexja.dtx
@@ -917,9 +917,25 @@ Note that the bold series in both family are same as the medium series of \emph{
917917 また,どちらのファミリでもイタリック体・スラント体は定義されない.
918918 %</ja>
919919
920-
921920 %<en>\item Japanese characters in math mode are typeset by the font family \texttt{mc}.
922921 %<ja>\item 数式モード中の和文文字は明朝体(\texttt{mc})で出力される.
922+
923+%<*en>
924+\item If you use the \Pkg{beamer} class with the default font theme (which uses sans serif
925+ fonts) and with \LuaTeX-ja, you might want to change default Japanese fonts to
926+ \emph{gothic} family. The following line changes the default Japanese font family
927+ to \emph{gothic}:
928+%</en>
929+%<*ja>
930+\item \Pkg{beamer}クラスを既定のフォント設定で使う場合,既定欧文フォントがサンセリフなの
931+ で,既定和文フォントもゴシック体にしたいと思うかもしれない.その場合はプリアンブルに
932+次を書けばよい:
933+%</ja>
934+\begin{lstlisting}
935+ \renewcommand{\kanjifamilydefault}{\gtdefault}
936+\end{lstlisting}
937+
938+
923939 \end{itemize}
924940
925941 %<*en>
@@ -1075,6 +1091,7 @@ auto select&\cs{fontencoding}&\cs{fontfamily}&---&---&\cs{usefont}\\
10751091 \ref{ssec-altfont}節の \cs{ltjdeclarealtfont} と,その\LaTeX 版の\
10761092 \cs{DeclareAlternateKanjiFont}(\ref{ssec-nfsspat}節)を参照せよ.
10771093 %</ja>
1094+
10781095 \end{itemize}
10791096
10801097 %<*en>
@@ -6967,7 +6984,7 @@ then the patch \Pkg{lltjp-listings} is loaded automatically at \verb+\begin{docu
69676984 意識する必要はない.
69686985 %</ja>
69696986
6970-%<en>\subsection{Notes}
6987+%<en>\subsection{Notes and additional keys}
69716988 %<ja>\subsection{注意}
69726989 %<*en>
69736990 \paragraph{Escaping to \LaTeX}
@@ -7009,6 +7026,20 @@ instead of ``\verb+\ほげ+''.
70097026 「\cs{}\IVSA FFFFF」というcontrol symbolが実行されることになる.
70107027 %</ja>
70117028
7029+%<*en>
7030+\paragraph{Variation selectors}
7031+\Pkg{lltjp-listings} add two keys, namely \texttt{vsraw}~and~\texttt{vscmd},
7032+which specify how variation selectors are treated in
7033+\texttt{lstlisting} or other enviroments.
7034+Note that these additional keys are not usable in the preamble,
7035+since \Pkg{lltjp-listings} is loaded at \verb+\begin{document}+.
7036+
7037+\texttt{vsraw} is a key which takes a boolean value, and its default value is
7038+false.
7039+\begin{itemize}
7040+ \item If the \texttt{vsraw} key is true, then
7041+variation selectors are ``combined'' with the previous character.
7042+%</en>
70127043 %<*ja>
70137044 \paragraph{異体字セレクタの扱い}
70147045 \texttt{lstlisting} 環境などの内部にある異体字セレクタを扱うため,
@@ -7021,21 +7052,31 @@ instead of ``\verb+\ほげ+''.
70217052 \item trueの場合は,異体字セレクタは「直前の文字に続けて」出力される.
70227053 もしもIVSサポート(\ref{ssec-ltjotf}節)が有効になっていた場合は,
70237054 以下の例(左側は入力,右側はその出力)のようになる.
7055+%</ja>
70247056 \begin{LTXexample}
70257057 \begin{lstlisting}[vsraw=true]
70267058 葛󠄀城市,葛󠄁飾区,葛西
70277059 \end{lstlisting}
70287060 \end{LTXexample}
7061+%<*en>
7062+\item If the \texttt{vsraw} key is false, then
7063+variation selectors are typeset by an appropriate command, which is specified by
7064+ the \texttt{vscmd} key.
7065+The default setting of the \texttt{vscmd} key produces the following.
7066+%</en>
7067+%<*ja>
70297068 \item falseの場合は,異体字セレクタは適当な命令によって「見える形で」出力される.
70307069 どのような形で出力されるかを規定するのが \texttt{vscmd} キーであり,
70317070 \Pkg{lltjp-listings} の標準設定では以下の例の右側のように出力される.
7071+%</ja>
70327072 \begin{LTXexample}
70337073 \begin{lstlisting}[vsraw=false,
70347074 vscmd=\ltjlistingsvsstdcmd]
70357075 葛󠄀城市,葛󠄁飾区,葛西
70367076 \end{lstlisting}
70377077 \end{LTXexample}
7038-ちなみに,本ドキュメントでは次のようにしている:
7078+%<ja> ちなみに,本ドキュメントでは次のようにしている:
7079+%<en> For example, the following code is the setting of the \texttt{vscmd} key in this document.
70397080 \begin{lstlisting}[numbers=left]
70407081 \def\IVSA#1#2#3#4#5{%
70417082 \textcolor{blue}{\raisebox{3.5pt}{\tt%
@@ -7049,10 +7090,56 @@ instead of ``\verb+\ほげ+''.
70497090 \lstset{vscmd=\IVSB}
70507091 \end{lstlisting}
70517092 \end{itemize}
7052-既定の出力命令を復活させたい場合は\ \verb+vsraw=\ltjlistingsvsstdcmd+\
7093+%<*en>
7094+The default output command of variation selectors is stored in \verb+\ltjlistingsvsstdcmd+.
7095+%</en>
7096+%<*ja>
7097+既定の出力命令を復活させたい場合は\ \verb+vscmd=\ltjlistingsvsstdcmd+\
70537098 とすれば良い.
70547099 %</ja>
70557100
7101+%<*en>
7102+\paragraph{The \texttt{doubleletterspace} key}
7103+Even the column format is \texttt{[c]fixed}, sometimes characters are not vertically aligned.
7104+The following example is typeset with \texttt{basewidth=2em}, and
7105+you'll see the leftmost ``\texttt{H}'' are not vertically aligned.
7106+\begin{lstlisting}[basewidth=2em, basicstyle=\tt,numbers=left]
7107+:H:
7108+:HHHH:
7109+\end{lstlisting}
7110+
7111+\Pkg{lltjp-listing} adds the \texttt{doubleletterspace} key (not activated by default, for
7112+compatibility) to
7113+improve the situation, namely doubles inter-character space in each output unit.
7114+With this key, the above input now produces better output.
7115+\begin{lstlisting}[basewidth=2em, basicstyle=\tt,numbers=left, doubleletterspace]
7116+:H:
7117+:HHHH:
7118+\end{lstlisting}
7119+%</en>
7120+%<*ja>
7121+\paragraph{\texttt{doubleletterspace}キー}
7122+\Pkg{listings}パッケージで列揃えが \texttt{[c]fixed} となっている場合でも,
7123+場合によっては文字が縦に揃わない場合もある.
7124+例を以下に示そう.これは強調するために \texttt{basewidth=2em} を設定している.
7125+\begin{lstlisting}[basewidth=2em, basicstyle=\tt,numbers=left]
7126+:H:
7127+:HHHH:
7128+\end{lstlisting}
7129+1行目と2行目の「\texttt{H}」の位置が揃っていないが,
7130+これは出力単位ごとに,先頭・末尾・各文字間に同じ量の空白を挿入することによる.
7131+
7132+\Pkg{lltjp-listing}では,このような症状を改善させるために \texttt{doubleletterspace} キー
7133+を追加した(標準では互換性のために無効になっている).このキーを有効にすると,
7134+出力単位中の各文字間の空白を2倍にすることで文字を揃いやすくしている.
7135+上と同じものを \texttt{doubleletterspace} キーを有効にして組んだものが以下であり,
7136+きちんと「\texttt{H}」の位置が揃っていることが分かる.
7137+\begin{lstlisting}[basewidth=2em, basicstyle=\tt,numbers=left, doubleletterspace]
7138+:H:
7139+:HHHH:
7140+\end{lstlisting}
7141+%</ja>
7142+
70567143 %<en>\subsection{Class of Characters}
70577144 %<ja>\subsection{文字種}
70587145
@@ -7182,7 +7269,7 @@ are classified into above 5~classes by the following rules:
71827269 Letter, Other, Kanji, Open, Closeのどれに属するかは次によって決まる:
71837270 %</ja>
71847271 \begin{itemize}
7185-%<en>\item \textbf{ALchar}s above \texttt{U+0080} are classified as Letter.
7272+%<en>\item \textbf{ALchar}s above or equal to~\texttt{U+0080} are classified as Letter.
71867273 %<ja>\item (\texttt{U+0080}以降の)\textbf{ALchar}は,すべてLetter扱いである.
71877274
71887275 %<en>\item \textbf{JAchar}s are classified in the order as follows:
@@ -7394,10 +7481,11 @@ OpenTypeフォントでもTrueTypeフォントでもIVS情報が格納されて
73947481 \texttt{fontloader} の呼び出しでかなり時間を消費することから,
73957482 %%% to_table を使わなくしたことで,メモリ使用量は減った
73967483 IVS情報をキャッシュに保存することで2回目以降の実行時間を節約している.
7484+%</ja>
73977485
73987486
7487+%<*ja>
73997488 \section{複数フォントの「合成」(未完)}
7400-
74017489 \section{\LuaTeX-jaにおけるキャッシュ}
74027490 \Pkg{luaotfload}パッケージが,各TrueType・OpenTypeフォントの情報を
74037491 キャッシュとして保存しているのと同様の方法で,
--- a/src/addons/luatexja-fontspec-24.sty
+++ b/src/addons/luatexja-fontspec-24.sty
@@ -3,13 +3,12 @@
33 %
44
55 \NeedsTeXFormat{LaTeX2e}
6-\ProvidesPackage{luatexja-fontspec-24}[2014/06/19 fontspec support of LuaTeX-ja]
6+\ProvidesPackage{luatexja-fontspec-24}[2014/12/03 fontspec support of LuaTeX-ja]
77 \RequirePackage{l3keys2e,luatexja}
88 \ExplSyntaxOn
99
1010 %%%%%%%% Change Japanese font family by \rmfamily or not
11-\bool_if:NTF \ltj_fontspec_match
12-{
11+\cs_new:Npn \ltj_fontspec_match_cmd {
1312 \renewcommand\jttdefault{\gtdefault}
1413 \DeclareRobustCommand\rmfamily
1514 {\not@math@alphabet\rmfamily\mathrm
@@ -21,12 +20,11 @@
2120 {\not@math@alphabet\ttfamily\mathtt
2221 \romanfamily\ttdefault\kanjifamily\jttdefault\selectfont}
2322 \DeclareDocumentCommand \setmonojfont { O{} m } {
24- \ltj_fontspec_set_family:Nnn \jttdefault {#1}{#2}
23+ \ltj_fontspec_set_family:Nnn \jttdefault {##1}{##2}
2524 \normalfont
2625 }
27-}{
2826 }
29-
27+\bool_if:NT \ltj_fontspec_match_bool \ltj_fontspec_match_cmd
3028 %%%%%%%% Messages
3129
3230 \msg_new:nnn {luatexja-fontspec} {addjfontfeatures-ignored}
--- a/src/addons/luatexja-fontspec.sty
+++ b/src/addons/luatexja-fontspec.sty
@@ -3,7 +3,7 @@
33 %
44
55 \NeedsTeXFormat{LaTeX2e}
6-\ProvidesPackage{luatexja-fontspec}[2014/06/19 fontspec support of LuaTeX-ja]
6+\ProvidesPackage{luatexja-fontspec}[2014/12/03 fontspec support of LuaTeX-ja]
77 \RequirePackage{l3keys2e,luatexja}
88 \ExplSyntaxOn
99
@@ -11,16 +11,16 @@
1111 \cs_set:Nn \ltj_fontspec_pass_opts: {}
1212 \keys_define:nn { luatexja-fontspec }
1313 {
14- match .bool_set:N = \ltj_fontspec_match,
14+ match .bool_set:N = \ltj_fontspec_match_bool,
1515 match .default:n = true,
16- pass .code:n = \cs_set:Nn \ltj_fontspec_pass_opts: {#1},
16+ pass .code:n = \cs_set:Nn \ltj_fontspec_pass_opts: {#1},% 互換性
1717 }
1818 \ProcessKeysOptions { luatexja-fontspec }
19-\RequirePackage[\ltj_fontspec_pass_opts:]{fontspec}[2011/09/13]
20-\cs_if_exist:NTF \fontspec_update_featstr:n {
21- \RequirePackage{luatexja-fontspec-23}
22-} {
19+\RequirePackage[\ltj_fontspec_pass_opts:]{fontspec}[2014/06/01]
20+%\cs_if_exist:NTF \fontspec_update_featstr:n {
21+% \RequirePackage{luatexja-fontspec-23}
22+%} {
2323 \RequirePackage{luatexja-fontspec-24}
24-}
24+%}
2525
2626 \endinput
--- a/src/addons/luatexja-preset.sty
+++ b/src/addons/luatexja-preset.sty
@@ -1,5 +1,5 @@
11 % luatexja-preset.sty
2-\ProvidesPackage{luatexja-preset}[2013/10/28 Japanese font presets]
2+\ProvidesPackage{luatexja-preset}[2014/12/03 Japanese font presets]
33
44 \RequirePackage{expl3}
55 \RequirePackage{luatexja-fontspec}
@@ -195,6 +195,14 @@
195195 }
196196
197197 \ExecuteOptions{ipaex}
198+
199+% match
200+\DeclareOption{match} {
201+ \bool_if:NF \ltj_fontspec_match_bool {
202+ \ltj_fontspec_match_cmd
203+ \bool_set_true:N \ltj_fontspec_match_bool
204+ }
205+}
198206 \ProcessOptions*
199207
200208 %% KozMinPr6N の場合はjp04 feature がないので,nlck にする
--- a/src/ltjsarticle.cls
+++ b/src/ltjsarticle.cls
@@ -38,7 +38,7 @@
3838 %% Right brace \} Tilde \~}
3939 \NeedsTeXFormat{LaTeX2e}
4040 \ProvidesClass{ltjsarticle}
41- [2014/05/14 ]
41+ [2014/12/24 ]
4242 \RequirePackage{luatexja}
4343 \newif\if@restonecol
4444 \newif\if@titlepage
@@ -364,11 +364,14 @@
364364 \fi
365365 \fi
366366 \ltj@setpar@global
367- \ltjsetkanjiskip{0pt plus .1\zw minus .01\zw}
368- \if@slide
369- \ltjsetxkanjiskip{0.1em}
370- \else
371- \ltjsetxkanjiskip{0.25em plus 0.15em minus 0.06em}
367+ \ltjsetkanjiskip{\z@ plus .1\zw minus .01\zw}
368+ \@tempskipa=\ltjgetparameter{xkanjiskip}
369+ \ifdim\@tempskipa>\z@
370+ \if@slide
371+ \ltjsetxkanjiskip{0.1em}
372+ \else
373+ \ltjsetxkanjiskip{0.25em plus 0.15em minus 0.06em}
374+ \fi
372375 \fi}
373376 \emergencystretch 3\zw
374377 \newif\ifnarrowbaselines
--- a/src/ltjsbook.cls
+++ b/src/ltjsbook.cls
@@ -38,7 +38,7 @@
3838 %% Right brace \} Tilde \~}
3939 \NeedsTeXFormat{LaTeX2e}
4040 \ProvidesClass{ltjsbook}
41- [2014/05/14 ]
41+ [2014/12/24 ]
4242 \RequirePackage{luatexja}
4343 \newif\if@restonecol
4444 \newif\if@titlepage
@@ -371,11 +371,14 @@
371371 \fi
372372 \fi
373373 \ltj@setpar@global
374- \ltjsetkanjiskip{0pt plus .1\zw minus .01\zw}
375- \if@slide
376- \ltjsetxkanjiskip{0.1em}
377- \else
378- \ltjsetxkanjiskip{0.25em plus 0.15em minus 0.06em}
374+ \ltjsetkanjiskip{\z@ plus .1\zw minus .01\zw}
375+ \@tempskipa=\ltjgetparameter{xkanjiskip}
376+ \ifdim\@tempskipa>\z@
377+ \if@slide
378+ \ltjsetxkanjiskip{0.1em}
379+ \else
380+ \ltjsetxkanjiskip{0.25em plus 0.15em minus 0.06em}
381+ \fi
379382 \fi}
380383 \emergencystretch 3\zw
381384 \newif\ifnarrowbaselines
--- a/src/ltjsclasses.dtx
+++ b/src/ltjsclasses.dtx
@@ -22,7 +22,7 @@
2222 % -----------------------------------------
2323 %
2424 % \fi
25-% \CheckSum{5203}
25+% \CheckSum{5210}
2626 %% \CharacterTable
2727 %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
2828 %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
@@ -50,7 +50,7 @@
5050 %<*driver>
5151 \ProvidesFile{ltjsclasses.dtx}
5252 %</driver>
53- [2014/05/14 ]
53+ [2014/12/24 ]
5454 %<*driver>
5555 \documentclass{ltjsarticle}
5656 \usepackage{doc}
@@ -132,6 +132,8 @@
132132 %
133133 % [2014-02-07 LTJ] jsclasses 2014-02-07 ベースにしました.
134134 %
135+% [2014-12-24 LTJ] |\@setfontsize| 中の和欧文間空白の設定で if 文が抜けていたのを直しました.
136+%
135137 % \StopEventually{}
136138 %
137139 % 以下では実際のコードに即して説明します。
@@ -960,6 +962,10 @@
960962 % |\ltjsetkanjiskip| と |\ltjsetxkanjiskip|(両者とも,
961963 % 実行前には |\ltj@setpar@global| の実行が必要)にしました.
962964 %
965+% [2014-12-24 LTJ] |jsclasses| では,|\@setfontsize| 中で |xkanjiskip| を
966+% 設定するのは現在の和欧文間空白の自然長が正の場合だけでした.
967+% |ltjsclasses| では最初からこの判定が抜けてしまっていたので,復活させます.
968+%
963969 % \begin{macrocode}
964970 \def\@setfontsize#1#2#3{%
965971 % \@nomath#1%
@@ -975,11 +981,14 @@
975981 \fi
976982 \fi
977983 \ltj@setpar@global
978- \ltjsetkanjiskip{0pt plus .1\zw minus .01\zw}
979- \if@slide
980- \ltjsetxkanjiskip{0.1em}
981- \else
982- \ltjsetxkanjiskip{0.25em plus 0.15em minus 0.06em}
984+ \ltjsetkanjiskip{\z@ plus .1\zw minus .01\zw}
985+ \@tempskipa=\ltjgetparameter{xkanjiskip}
986+ \ifdim\@tempskipa>\z@
987+ \if@slide
988+ \ltjsetxkanjiskip{0.1em}
989+ \else
990+ \ltjsetxkanjiskip{0.25em plus 0.15em minus 0.06em}
991+ \fi
983992 \fi}
984993 % \end{macrocode}
985994 % \end{macro}
--- a/src/ltjskiyou.cls
+++ b/src/ltjskiyou.cls
@@ -38,7 +38,7 @@
3838 %% Right brace \} Tilde \~}
3939 \NeedsTeXFormat{LaTeX2e}
4040 \ProvidesClass{ltjskiyou}
41- [2014/05/14 ]
41+ [2014/12/24 ]
4242 \RequirePackage{luatexja}
4343 \newif\if@restonecol
4444 \newif\if@titlepage
@@ -366,11 +366,14 @@
366366 \fi
367367 \fi
368368 \ltj@setpar@global
369- \ltjsetkanjiskip{0pt plus .1\zw minus .01\zw}
370- \if@slide
371- \ltjsetxkanjiskip{0.1em}
372- \else
373- \ltjsetxkanjiskip{0.25em plus 0.15em minus 0.06em}
369+ \ltjsetkanjiskip{\z@ plus .1\zw minus .01\zw}
370+ \@tempskipa=\ltjgetparameter{xkanjiskip}
371+ \ifdim\@tempskipa>\z@
372+ \if@slide
373+ \ltjsetxkanjiskip{0.1em}
374+ \else
375+ \ltjsetxkanjiskip{0.25em plus 0.15em minus 0.06em}
376+ \fi
374377 \fi}
375378 \emergencystretch 3\zw
376379 \newif\ifnarrowbaselines
--- a/src/ltjspf.cls
+++ b/src/ltjspf.cls
@@ -38,7 +38,7 @@
3838 %% Right brace \} Tilde \~}
3939 \NeedsTeXFormat{LaTeX2e}
4040 \ProvidesClass{ltjspf}
41- [2014/05/14 ]
41+ [2014/12/24 ]
4242 \RequirePackage{luatexja}
4343 \newif\if@restonecol
4444 \newif\if@titlepage
@@ -364,11 +364,14 @@
364364 \fi
365365 \fi
366366 \ltj@setpar@global
367- \ltjsetkanjiskip{0pt plus .1\zw minus .01\zw}
368- \if@slide
369- \ltjsetxkanjiskip{0.1em}
370- \else
371- \ltjsetxkanjiskip{0.25em plus 0.15em minus 0.06em}
367+ \ltjsetkanjiskip{\z@ plus .1\zw minus .01\zw}
368+ \@tempskipa=\ltjgetparameter{xkanjiskip}
369+ \ifdim\@tempskipa>\z@
370+ \if@slide
371+ \ltjsetxkanjiskip{0.1em}
372+ \else
373+ \ltjsetxkanjiskip{0.25em plus 0.15em minus 0.06em}
374+ \fi
372375 \fi}
373376 \emergencystretch 3\zw
374377 \newif\ifnarrowbaselines
--- a/src/patches/lltjp-listings.sty
+++ b/src/patches/lltjp-listings.sty
@@ -7,8 +7,12 @@
77 \RequirePackage{listings,luatexbase-cctb}
88
99 %%%%%%%%%%%%%%%% Japanese support
10+%% whether letter-space in a fixed mode box is doubled or not
11+\newif\if@ltj@lst@double
12+\lst@Key{doubleletterspace}f[t]{\lstKV@SetIf{#1}\if@ltj@lst@double}
13+
1014 %% IVS support
11-\newif\if@ltj@lst@vsraw \@ltj@lst@vsrawfalse
15+\newif\if@ltj@lst@vsraw
1216 \def\ltj@lst@vscmd{}
1317 \lst@Key{vsraw}f[t]{\lstKV@SetIf{#1}\if@ltj@lst@vsraw}
1418 \lst@Key{vscmd}\relax{\def\ltj@lst@vscmd{#1}}
@@ -30,17 +34,19 @@
3034 local cat_str = luatexbase.catcodetables['string']
3135 local cat_lp = luatexbase.catcodetables['latex-package']
3236 local ubyte = unicode.utf8.byte
37+ local spccmd = string.char(0x5C) .. 'ltj@lst@hss@normal'
3338 luatexja.lst = {}
3439 function luatexja.lst.althss(t)
3540 t = ubyte(t)
3641 if not (t>=0xE0100 and t<0xE01F0) then
37- tex.sprint(cat_lp, string.char(0x5C) .. 'lst@hss')
42+ tex.sprint(cat_lp, spccmd)
3843 end
3944 end
4045 }
41-\gdef\ltj@lst@hss@ivs#1{%
46+\def\ltj@lst@hss@ivs#1{%
4247 \directlua{luatexja.lst.althss('\luatexluaescapestring{#1}')}#1%
4348 }
49+\def\ltj@lst@hss@double{\lst@hss\lst@hss}
4450
4551 % lowest level
4652 \newif\if@ltj@lst@kanji
@@ -64,7 +70,7 @@
6470 \lst@Output
6571 \else
6672 \if@ltj@lst@kanji\else\lst@OutputOther\fi\lst@lettertrue
67- \fi}
73+ \fi\@ltj@lst@kanjitrue}
6874
6975 \def\ltj@lst@setopenflag{%
7076 \lst@ifletter
@@ -173,6 +179,26 @@
173179 \SetCatcodeRange{"FE00}{"FE0F}{13}% Variation Selector
174180 }
175181
182+% redefine \lstinline@ and \lst@InlineG
183+% because \lstinline!あ...! causes ``Runaway argument?'' Error
184+\def\lstinline@#1{%
185+ \lst@Init\relax
186+ \ltj@lst@check@inline{\lst@InlineM#1}{\lst@InlineJ#1}}
187+\def\lst@InlineG{%
188+ \lst@Init\relax
189+ \ltj@lst@check@inline{\lst@InlineM\}}%
190+ {\let\lst@arg\@empty \lst@InlineGJ}}
191+
192+\def\ltj@lst@check@inline#1#2#3{%
193+ \begingroup \lccode`\~=`#3\lowercase{\endgroup
194+ \ifx~}#3%
195+ \def\lst@next{#1}%
196+ \else\ifnum`#3>127\relax
197+ \def\lst@next{#1}%
198+ \else
199+ \def\lst@next{#2}%
200+ \fi\fi\lst@next #3}
201+
176202 % We redefine \lst@BeginDropInput, since now we have
177203 % two additional `process macros'.
178204 \def\lst@BeginDropInput#1{%
@@ -201,17 +227,22 @@
201227 for i = 1, utf.len(buf) do
202228 local c = utf.sub(buf, i, i)
203229 local cu = utf.byte(c)
204- if cu > 0x80 and tex.getcatcode(cu) \string~= 13 then
230+ if cu >= 0x80 and tex.getcatcode(cu) \string~= 13 then
205231 ret = ret .. utf.char(1048575) % U+FFFFF
206232 end
207233 ret = ret .. c
208234 end
209235 return ret
210236 end, 'ltj.listings_unicode', 1)}%
237+ \if@ltj@lst@double
238+ \let\ltj@lst@hss@normal=\ltj@lst@hss@double
239+ \else
240+ \let\ltj@lst@hss@normal=\lst@hss
241+ \fi
211242 \if@ltj@lst@vsraw
212243 \let\ltj@lst@hss=\ltj@lst@hss@ivs
213244 \else
214- \let\ltj@lst@hss=\lst@hss
245+ \let\ltj@lst@hss=\ltj@lst@hss@normal
215246 \fi
216247 }
217248 \lst@AddToHook{ExitVars}{%
@@ -298,4 +329,4 @@
298329 \def\lstlistingname{ソースコード}
299330 \def\lstlistlistingname{ソースコード目次}
300331 % \end{修正事項}
301-\endinput
\ No newline at end of file
332+\endinput
Binary files a/test/test13-listings.pdf and b/test/test13-listings.pdf differ
--- a/test/test13-listings.tex
+++ b/test/test13-listings.tex
@@ -2,9 +2,8 @@
22 \documentclass{article}
33
44 \usepackage{luatexja-fontspec}
5-\usepackage{listings,color,showexpl}
6-\usepackage{luatexja-otf}
7-\directlua{luatexja.otf.enable_ivs()}
5+\usepackage{listings,color,showexpl,comment}
6+\usepackage{luatexja-otf}\directlua{luatexja.otf.enable_ivs()}
87 \usepackage
98 [
109 papersize={100mm,100mm},
@@ -96,15 +95,20 @@ the first line of the listing is not rendered.
9695 \textbf{Ticket \#29311}
9796
9897 \begin{env}{\relax}
99-長い長い長い長い長い長い長い長い長い長い長い長い#い長い
100-長い長い長い長い長い長い長い長い長い長い長い長aaaa#::い長い
101-長い長い長い長い長い長い長い長い長い長い長い長い,長い長い
102-長い長い長い長い長い長い長い長い長い長い長い長aa,::い長い
103-長い長い長い長い長い長い長い長い長い長い長い長,,::い長い
98+長い長い長い長い長い長い長い長い長い長い長い長aaa長い::い長い
99+長い長い長い長い長い長い長い長い長い長い長い長aaaa長い::い長い
100+長い長い長い長い長い長い長い長い長い長い長い長い長い,長い長い
101+あ長い長い長い長い長い長い長い長い長い長い長い長い長い,長い長い
102+長い長い長い長い長い長い長い長い長い長い長い長い長a,::い長い
103+長い長い長い長い長い長い長い長い長い長い長い長い長aa,::い長い
104+長い長い長い長い長い長い長い長い長い長い長い長い長aaa,::い長い
105+長い長い長い長い長い長い長い長い長い長い長い長い長aaaa,::い長い
106+長い長い長い長い長い長い長い長い長い長い長い長い長い,,::い長い
104107 長い長い長い長い長い長い長い長い長い長い長い長(い長い
105108 長い長い長い長い長い長い長い長い長い長い長いaa(い長い
106109 長い長い長い長い長い長い長い長い長い長い長い長(aa長い
107110 長い長い長い長い長い長い長い長い長い長い長い長い)(長い
111+あ長い長い長い長い長い長い長い長い長い長い長い長い)(長い
108112 \end{env}
109113
110114 \newpage
@@ -147,9 +151,37 @@ IVS対応2: \texttt{vsraw=true}
147151 1葛󠄀城,葛󠄁飾アイウ
148152 \end{LTXexample}
149153
154+\newpage
155+
156+下の行において,最初の「1」の場所がずれてしまうのは半ば仕方がないとも言える.
157+1行目では,「1234567890」が前後・文字間に計11箇所の等量の空白を入れて10全角の領域に
158+出力されているのに対し,2,~3行目では「1」が全角幅に左右中央で出力されているからである.
150159 \begin{lstlisting}[escapechar=\%,vsraw, basewidth=1\zw, basicstyle=\tt]
151160 1234567890
152161 1あ,23
153162 1あ2,3
163+1234567890
164+\end{lstlisting}
165+
166+\texttt{doubleletterspace}オプションを指定すると,出力単位中の文字と文字の間隔を2倍にするため,
167+下の例の「1」のように,各文字の垂直位置が揃いやすくなる.
168+\begin{lstlisting}[escapechar=\%,doubleletterspace, basewidth=1\zw, basicstyle=\tt]
169+1234567890
170+1あ,23
171+1あ2,3
172+1234567890
154173 \end{lstlisting}
174+
175+
176+\newpage
177+\textbf{Ticket \#34786}
178+\ltjsetparameter{autoxspacing=false}
179+
180+foo \lstinline[basicstyle=\tt]!bar! baz あ
181+あ\lstinline[basicstyle=\tt]{bar}hoge
182+
183+foo \lstinline[basicstyle=\tt]!あbar! baz あ
184+あ\lstinline[basicstyle=\tt]{いbar}hoge
185+
186+
155187 \end{document}