OSDN Git Service

Cherry-picked several commits from kitagawa_tfont branch
authorHironori Kitagawa <h_kitagawa2001@yahoo.co.jp>
Tue, 3 Mar 2015 05:47:22 +0000 (14:47 +0900)
committerHironori Kitagawa <h_kitagawa2001@yahoo.co.jp>
Tue, 3 Mar 2015 05:47:22 +0000 (14:47 +0900)
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.

13 files changed:
doc/ltjsclasses.pdf
doc/luatexja.dtx
src/addons/luatexja-fontspec-24.sty
src/addons/luatexja-fontspec.sty
src/addons/luatexja-preset.sty
src/ltjsarticle.cls
src/ltjsbook.cls
src/ltjsclasses.dtx
src/ltjskiyou.cls
src/ltjspf.cls
src/patches/lltjp-listings.sty
test/test13-listings.pdf
test/test13-listings.tex

index c42dbc6..0259ee6 100644 (file)
Binary files a/doc/ltjsclasses.pdf and b/doc/ltjsclasses.pdf differ
index f98bd5d..d615eb4 100644 (file)
@@ -917,9 +917,25 @@ Note that the bold series in both family are same as the medium series of \emph{
 また,どちらのファミリでもイタリック体・スラント体は定義されない.
 %</ja>
 
-
 %<en>\item Japanese characters in math mode are typeset by the font family \texttt{mc}.
 %<ja>\item 数式モード中の和文文字は明朝体(\texttt{mc})で出力される.
+
+%<*en>
+\item If you use the \Pkg{beamer} class with the default font theme (which uses sans serif
+      fonts) and with \LuaTeX-ja, you might want to change default Japanese fonts to
+      \emph{gothic} family. The following line  changes  the default Japanese font family
+      to \emph{gothic}:
+%</en>
+%<*ja>
+\item \Pkg{beamer}クラスを既定のフォント設定で使う場合,既定欧文フォントがサンセリフなの
+      で,既定和文フォントもゴシック体にしたいと思うかもしれない.その場合はプリアンブルに
+次を書けばよい:
+%</ja>
+\begin{lstlisting}
+ \renewcommand{\kanjifamilydefault}{\gtdefault}
+\end{lstlisting}
+
+
 \end{itemize}
 
 %<*en>
@@ -1075,6 +1091,7 @@ auto select&\cs{fontencoding}&\cs{fontfamily}&---&---&\cs{usefont}\\
 \ref{ssec-altfont}節の \cs{ltjdeclarealtfont} と,その\LaTeX 版の\
 \cs{DeclareAlternateKanjiFont}(\ref{ssec-nfsspat}節)を参照せよ.
 %</ja>
+
 \end{itemize}
 
 %<*en>
@@ -6967,7 +6984,7 @@ then the patch \Pkg{lltjp-listings} is loaded automatically at \verb+\begin{docu
 意識する必要はない.
 %</ja>
 
-%<en>\subsection{Notes}
+%<en>\subsection{Notes and additional keys}
 %<ja>\subsection{注意}
 %<*en>
 \paragraph{Escaping to \LaTeX}
@@ -7009,6 +7026,20 @@ instead of ``\verb+\ほげ+''.
 「\cs{}\IVSA FFFFF」というcontrol symbolが実行されることになる.
 %</ja>
 
+%<*en>
+\paragraph{Variation selectors}
+\Pkg{lltjp-listings} add two keys, namely \texttt{vsraw}~and~\texttt{vscmd},
+which specify how variation selectors are treated in 
+\texttt{lstlisting} or other enviroments.
+Note that these additional keys are not usable in the preamble, 
+since \Pkg{lltjp-listings} is loaded at \verb+\begin{document}+.
+
+\texttt{vsraw} is a key which takes a boolean value, and its default value is
+false.
+\begin{itemize}
+ \item If the \texttt{vsraw} key is true, then
+variation selectors are ``combined'' with the previous character.
+%</en>
 %<*ja>
 \paragraph{異体字セレクタの扱い}
 \texttt{lstlisting} 環境などの内部にある異体字セレクタを扱うため,
@@ -7021,21 +7052,31 @@ instead of ``\verb+\ほげ+''.
  \item trueの場合は,異体字セレクタは「直前の文字に続けて」出力される.
 もしもIVSサポート(\ref{ssec-ltjotf}節)が有効になっていた場合は,
 以下の例(左側は入力,右側はその出力)のようになる.
+%</ja>
 \begin{LTXexample}
 \begin{lstlisting}[vsraw=true]
 葛󠄀城市,葛󠄁飾区,葛西
 \end{lstlisting}
 \end{LTXexample}
+%<*en>
+\item If the \texttt{vsraw} key is false, then 
+variation selectors are typeset by an appropriate command, which is specified by
+      the \texttt{vscmd} key.
+The default setting of the \texttt{vscmd} key produces the following.
+%</en>
+%<*ja>
 \item falseの場合は,異体字セレクタは適当な命令によって「見える形で」出力される.
 どのような形で出力されるかを規定するのが \texttt{vscmd} キーであり,
 \Pkg{lltjp-listings} の標準設定では以下の例の右側のように出力される.
+%</ja>
 \begin{LTXexample}
 \begin{lstlisting}[vsraw=false,
    vscmd=\ltjlistingsvsstdcmd]
 葛󠄀城市,葛󠄁飾区,葛西
 \end{lstlisting}
 \end{LTXexample}
-ちなみに,本ドキュメントでは次のようにしている:
+%<ja> ちなみに,本ドキュメントでは次のようにしている:
+%<en> For example, the following code is the setting of the \texttt{vscmd} key in this document.
 \begin{lstlisting}[numbers=left]
 \def\IVSA#1#2#3#4#5{%
   \textcolor{blue}{\raisebox{3.5pt}{\tt%
@@ -7049,10 +7090,56 @@ instead of ``\verb+\ほげ+''.
 \lstset{vscmd=\IVSB}
 \end{lstlisting}
 \end{itemize}
-既定の出力命令を復活させたい場合は\ \verb+vsraw=\ltjlistingsvsstdcmd+\
+%<*en>
+The default output command of variation selectors is stored in \verb+\ltjlistingsvsstdcmd+.
+%</en>
+%<*ja>
+既定の出力命令を復活させたい場合は\ \verb+vscmd=\ltjlistingsvsstdcmd+\
 とすれば良い.
 %</ja>
 
+%<*en>
+\paragraph{The \texttt{doubleletterspace} key}
+Even the column format is \texttt{[c]fixed}, sometimes characters are not vertically aligned.
+The following example  is typeset with \texttt{basewidth=2em}, and
+you'll see the leftmost ``\texttt{H}'' are not vertically aligned.
+\begin{lstlisting}[basewidth=2em, basicstyle=\tt,numbers=left]
+:H:
+:HHHH:
+\end{lstlisting}
+
+\Pkg{lltjp-listing} adds the \texttt{doubleletterspace} key (not activated by default, for
+compatibility) to
+improve the situation, namely doubles inter-character space in each output unit.
+With this key, the above input now produces better output.
+\begin{lstlisting}[basewidth=2em, basicstyle=\tt,numbers=left, doubleletterspace]
+:H:
+:HHHH:
+\end{lstlisting}
+%</en>
+%<*ja>
+\paragraph{\texttt{doubleletterspace}キー}
+\Pkg{listings}パッケージで列揃えが \texttt{[c]fixed} となっている場合でも,
+場合によっては文字が縦に揃わない場合もある.
+例を以下に示そう.これは強調するために \texttt{basewidth=2em} を設定している.
+\begin{lstlisting}[basewidth=2em, basicstyle=\tt,numbers=left]
+:H:
+:HHHH:
+\end{lstlisting}
+1行目と2行目の「\texttt{H}」の位置が揃っていないが,
+これは出力単位ごとに,先頭・末尾・各文字間に同じ量の空白を挿入することによる.
+
+\Pkg{lltjp-listing}では,このような症状を改善させるために \texttt{doubleletterspace} キー
+を追加した(標準では互換性のために無効になっている).このキーを有効にすると,
+出力単位中の各文字間の空白を2倍にすることで文字を揃いやすくしている.
+上と同じものを \texttt{doubleletterspace} キーを有効にして組んだものが以下であり,
+きちんと「\texttt{H}」の位置が揃っていることが分かる.
+\begin{lstlisting}[basewidth=2em, basicstyle=\tt,numbers=left, doubleletterspace]
+:H:
+:HHHH:
+\end{lstlisting}
+%</ja>
+
 %<en>\subsection{Class of Characters}
 %<ja>\subsection{文字種}
 
@@ -7182,7 +7269,7 @@ are classified into above 5~classes by the following rules:
 Letter, Other, Kanji, Open, Closeのどれに属するかは次によって決まる:
 %</ja>
 \begin{itemize}
-%<en>\item \textbf{ALchar}s above \texttt{U+0080} are classified as Letter.
+%<en>\item \textbf{ALchar}s above or equal to~\texttt{U+0080} are classified as Letter.
 %<ja>\item (\texttt{U+0080}以降の)\textbf{ALchar}は,すべてLetter扱いである.
 
 %<en>\item \textbf{JAchar}s are classified in the order as follows:
@@ -7394,10 +7481,11 @@ OpenTypeフォントでもTrueTypeフォントでもIVS情報が格納されて
 \texttt{fontloader} の呼び出しでかなり時間を消費することから,
 %%% to_table を使わなくしたことで,メモリ使用量は減った
 IVS情報をキャッシュに保存することで2回目以降の実行時間を節約している.
+%</ja>
 
 
+%<*ja>
 \section{複数フォントの「合成」(未完)}
-
 \section{\LuaTeX-jaにおけるキャッシュ}
 \Pkg{luaotfload}パッケージが,各TrueType・OpenTypeフォントの情報を
 キャッシュとして保存しているのと同様の方法で,
index 4bd81c6..f443854 100644 (file)
@@ -3,13 +3,12 @@
 %
 
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{luatexja-fontspec-24}[2014/06/19 fontspec support of LuaTeX-ja]
+\ProvidesPackage{luatexja-fontspec-24}[2014/12/03 fontspec support of LuaTeX-ja]
 \RequirePackage{l3keys2e,luatexja}
 \ExplSyntaxOn
 
 %%%%%%%% Change Japanese font family by \rmfamily or not
-\bool_if:NTF  \ltj_fontspec_match
-{
+\cs_new:Npn \ltj_fontspec_match_cmd {
   \renewcommand\jttdefault{\gtdefault}
   \DeclareRobustCommand\rmfamily
   {\not@math@alphabet\rmfamily\mathrm
   {\not@math@alphabet\ttfamily\mathtt
      \romanfamily\ttdefault\kanjifamily\jttdefault\selectfont}
   \DeclareDocumentCommand \setmonojfont { O{} m } {
-    \ltj_fontspec_set_family:Nnn \jttdefault {#1}{#2}
+    \ltj_fontspec_set_family:Nnn \jttdefault {##1}{##2}
     \normalfont
   }
-}{
 }
-
+\bool_if:NT  \ltj_fontspec_match_bool \ltj_fontspec_match_cmd
 %%%%%%%% Messages
 
 \msg_new:nnn {luatexja-fontspec} {addjfontfeatures-ignored}
index 51346d5..6287324 100644 (file)
@@ -3,7 +3,7 @@
 %
 
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{luatexja-fontspec}[2014/06/19 fontspec support of LuaTeX-ja]
+\ProvidesPackage{luatexja-fontspec}[2014/12/03 fontspec support of LuaTeX-ja]
 \RequirePackage{l3keys2e,luatexja}
 \ExplSyntaxOn
 
 \cs_set:Nn  \ltj_fontspec_pass_opts: {}
 \keys_define:nn { luatexja-fontspec }
   {
-    match .bool_set:N = \ltj_fontspec_match,
+    match .bool_set:N = \ltj_fontspec_match_bool,
     match .default:n  = true,
-    pass .code:n = \cs_set:Nn \ltj_fontspec_pass_opts: {#1},
+    pass .code:n = \cs_set:Nn \ltj_fontspec_pass_opts: {#1},% 互換性
   }
 \ProcessKeysOptions { luatexja-fontspec }
-\RequirePackage[\ltj_fontspec_pass_opts:]{fontspec}[2011/09/13]
-\cs_if_exist:NTF \fontspec_update_featstr:n {
-  \RequirePackage{luatexja-fontspec-23}
-} {
+\RequirePackage[\ltj_fontspec_pass_opts:]{fontspec}[2014/06/01]
+%\cs_if_exist:NTF \fontspec_update_featstr:n {
+%  \RequirePackage{luatexja-fontspec-23}
+%} {
   \RequirePackage{luatexja-fontspec-24}
-}
+%}
 
 \endinput
index 3f6b4ef..680f689 100644 (file)
@@ -1,5 +1,5 @@
 % luatexja-preset.sty
-\ProvidesPackage{luatexja-preset}[2013/10/28 Japanese font presets]
+\ProvidesPackage{luatexja-preset}[2014/12/03 Japanese font presets]
 
 \RequirePackage{expl3}
 \RequirePackage{luatexja-fontspec}
 }
 
 \ExecuteOptions{ipaex}
+
+% match 
+\DeclareOption{match} {
+  \bool_if:NF  \ltj_fontspec_match_bool {
+    \ltj_fontspec_match_cmd
+    \bool_set_true:N \ltj_fontspec_match_bool
+  }
+}
 \ProcessOptions*
 
 %% KozMinPr6N の場合はjp04 feature がないので,nlck にする
index 3d31a05..0625a07 100644 (file)
@@ -38,7 +38,7 @@
 %%   Right brace   \}     Tilde         \~}
 \NeedsTeXFormat{LaTeX2e}
 \ProvidesClass{ltjsarticle}
-  [2014/05/14 ]
+  [2014/12/24 ]
 \RequirePackage{luatexja}
 \newif\if@restonecol
 \newif\if@titlepage
     \fi
   \fi
   \ltj@setpar@global
-  \ltjsetkanjiskip{0pt plus .1\zw minus .01\zw}
-  \if@slide
-    \ltjsetxkanjiskip{0.1em}
-  \else
-    \ltjsetxkanjiskip{0.25em plus 0.15em minus 0.06em}
+  \ltjsetkanjiskip{\z@ plus .1\zw minus .01\zw}
+  \@tempskipa=\ltjgetparameter{xkanjiskip}
+  \ifdim\@tempskipa>\z@
+    \if@slide
+      \ltjsetxkanjiskip{0.1em}
+    \else
+      \ltjsetxkanjiskip{0.25em plus 0.15em minus 0.06em}
+    \fi
   \fi}
 \emergencystretch 3\zw
 \newif\ifnarrowbaselines
index 4e3e12b..d455f09 100644 (file)
@@ -38,7 +38,7 @@
 %%   Right brace   \}     Tilde         \~}
 \NeedsTeXFormat{LaTeX2e}
 \ProvidesClass{ltjsbook}
-  [2014/05/14 ]
+  [2014/12/24 ]
 \RequirePackage{luatexja}
 \newif\if@restonecol
 \newif\if@titlepage
     \fi
   \fi
   \ltj@setpar@global
-  \ltjsetkanjiskip{0pt plus .1\zw minus .01\zw}
-  \if@slide
-    \ltjsetxkanjiskip{0.1em}
-  \else
-    \ltjsetxkanjiskip{0.25em plus 0.15em minus 0.06em}
+  \ltjsetkanjiskip{\z@ plus .1\zw minus .01\zw}
+  \@tempskipa=\ltjgetparameter{xkanjiskip}
+  \ifdim\@tempskipa>\z@
+    \if@slide
+      \ltjsetxkanjiskip{0.1em}
+    \else
+      \ltjsetxkanjiskip{0.25em plus 0.15em minus 0.06em}
+    \fi
   \fi}
 \emergencystretch 3\zw
 \newif\ifnarrowbaselines
index 6bff584..53b2f05 100644 (file)
@@ -22,7 +22,7 @@
 %  -----------------------------------------
 %
 % \fi
-% \CheckSum{5203}
+% \CheckSum{5210}
 %% \CharacterTable
 %%  {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
 %%   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 @@
 %<*driver>
 \ProvidesFile{ltjsclasses.dtx}
 %</driver>
-  [2014/05/14 ]
+  [2014/12/24 ]
 %<*driver>
 \documentclass{ltjsarticle}
 \usepackage{doc}
 %
 % [2014-02-07 LTJ] jsclasses 2014-02-07 ベースにしました.
 %
+% [2014-12-24 LTJ] |\@setfontsize| 中の和欧文間空白の設定で if 文が抜けていたのを直しました.
+%
 % \StopEventually{}
 %
 % 以下では実際のコードに即して説明します。
 % |\ltjsetkanjiskip| と |\ltjsetxkanjiskip|(両者とも,
 % 実行前には |\ltj@setpar@global| の実行が必要)にしました.
 %
+% [2014-12-24 LTJ] |jsclasses| では,|\@setfontsize| 中で |xkanjiskip| を
+% 設定するのは現在の和欧文間空白の自然長が正の場合だけでした.
+% |ltjsclasses| では最初からこの判定が抜けてしまっていたので,復活させます.
+%
 %    \begin{macrocode}
 \def\@setfontsize#1#2#3{%
 % \@nomath#1%
     \fi
   \fi
   \ltj@setpar@global
-  \ltjsetkanjiskip{0pt plus .1\zw minus .01\zw}
-  \if@slide 
-    \ltjsetxkanjiskip{0.1em} 
-  \else
-    \ltjsetxkanjiskip{0.25em plus 0.15em minus 0.06em}
+  \ltjsetkanjiskip{\z@ plus .1\zw minus .01\zw}
+  \@tempskipa=\ltjgetparameter{xkanjiskip}
+  \ifdim\@tempskipa>\z@
+    \if@slide 
+      \ltjsetxkanjiskip{0.1em}
+    \else
+      \ltjsetxkanjiskip{0.25em plus 0.15em minus 0.06em}
+    \fi
   \fi}
 %    \end{macrocode}
 % \end{macro}
index 1311dec..e673e1b 100644 (file)
@@ -38,7 +38,7 @@
 %%   Right brace   \}     Tilde         \~}
 \NeedsTeXFormat{LaTeX2e}
 \ProvidesClass{ltjskiyou}
-  [2014/05/14 ]
+  [2014/12/24 ]
 \RequirePackage{luatexja}
 \newif\if@restonecol
 \newif\if@titlepage
     \fi
   \fi
   \ltj@setpar@global
-  \ltjsetkanjiskip{0pt plus .1\zw minus .01\zw}
-  \if@slide
-    \ltjsetxkanjiskip{0.1em}
-  \else
-    \ltjsetxkanjiskip{0.25em plus 0.15em minus 0.06em}
+  \ltjsetkanjiskip{\z@ plus .1\zw minus .01\zw}
+  \@tempskipa=\ltjgetparameter{xkanjiskip}
+  \ifdim\@tempskipa>\z@
+    \if@slide
+      \ltjsetxkanjiskip{0.1em}
+    \else
+      \ltjsetxkanjiskip{0.25em plus 0.15em minus 0.06em}
+    \fi
   \fi}
 \emergencystretch 3\zw
 \newif\ifnarrowbaselines
index fab8f0c..046dcdc 100644 (file)
@@ -38,7 +38,7 @@
 %%   Right brace   \}     Tilde         \~}
 \NeedsTeXFormat{LaTeX2e}
 \ProvidesClass{ltjspf}
-  [2014/05/14 ]
+  [2014/12/24 ]
 \RequirePackage{luatexja}
 \newif\if@restonecol
 \newif\if@titlepage
     \fi
   \fi
   \ltj@setpar@global
-  \ltjsetkanjiskip{0pt plus .1\zw minus .01\zw}
-  \if@slide
-    \ltjsetxkanjiskip{0.1em}
-  \else
-    \ltjsetxkanjiskip{0.25em plus 0.15em minus 0.06em}
+  \ltjsetkanjiskip{\z@ plus .1\zw minus .01\zw}
+  \@tempskipa=\ltjgetparameter{xkanjiskip}
+  \ifdim\@tempskipa>\z@
+    \if@slide
+      \ltjsetxkanjiskip{0.1em}
+    \else
+      \ltjsetxkanjiskip{0.25em plus 0.15em minus 0.06em}
+    \fi
   \fi}
 \emergencystretch 3\zw
 \newif\ifnarrowbaselines
index ff20e58..3017f08 100644 (file)
@@ -7,8 +7,12 @@
 \RequirePackage{listings,luatexbase-cctb}
 
 %%%%%%%%%%%%%%%% Japanese support
+%% whether letter-space in a fixed mode box is doubled or not
+\newif\if@ltj@lst@double
+\lst@Key{doubleletterspace}f[t]{\lstKV@SetIf{#1}\if@ltj@lst@double}
+
 %% IVS support
-\newif\if@ltj@lst@vsraw \@ltj@lst@vsrawfalse
+\newif\if@ltj@lst@vsraw
 \def\ltj@lst@vscmd{}
 \lst@Key{vsraw}f[t]{\lstKV@SetIf{#1}\if@ltj@lst@vsraw}
 \lst@Key{vscmd}\relax{\def\ltj@lst@vscmd{#1}}
   local cat_str = luatexbase.catcodetables['string']
   local cat_lp  = luatexbase.catcodetables['latex-package']
   local ubyte = unicode.utf8.byte
+  local spccmd = string.char(0x5C) .. 'ltj@lst@hss@normal'
   luatexja.lst = {}
   function luatexja.lst.althss(t)
     t = ubyte(t)
     if not (t>=0xE0100 and t<0xE01F0) then
-      tex.sprint(cat_lp, string.char(0x5C) .. 'lst@hss')
+      tex.sprint(cat_lp, spccmd)
     end
   end
 }
-\gdef\ltj@lst@hss@ivs#1{%
+\def\ltj@lst@hss@ivs#1{%
   \directlua{luatexja.lst.althss('\luatexluaescapestring{#1}')}#1%
 }
+\def\ltj@lst@hss@double{\lst@hss\lst@hss}
 
 % lowest level
 \newif\if@ltj@lst@kanji
@@ -64,7 +70,7 @@
     \lst@Output
   \else
     \if@ltj@lst@kanji\else\lst@OutputOther\fi\lst@lettertrue
-  \fi}
+  \fi\@ltj@lst@kanjitrue}
 
 \def\ltj@lst@setopenflag{%
   \lst@ifletter
   \SetCatcodeRange{"FE00}{"FE0F}{13}%     Variation Selector
 }
 
+% redefine \lstinline@ and \lst@InlineG
+% because \lstinline!あ...! causes ``Runaway argument?'' Error
+\def\lstinline@#1{%
+    \lst@Init\relax
+    \ltj@lst@check@inline{\lst@InlineM#1}{\lst@InlineJ#1}}
+\def\lst@InlineG{%
+    \lst@Init\relax
+    \ltj@lst@check@inline{\lst@InlineM\}}%
+                         {\let\lst@arg\@empty \lst@InlineGJ}}
+
+\def\ltj@lst@check@inline#1#2#3{%
+    \begingroup \lccode`\~=`#3\lowercase{\endgroup
+    \ifx~}#3%
+        \def\lst@next{#1}%
+    \else\ifnum`#3>127\relax
+        \def\lst@next{#1}%
+    \else
+        \def\lst@next{#2}%
+    \fi\fi\lst@next #3}
+
 % We redefine \lst@BeginDropInput, since now we have
 % two additional `process macros'.
 \def\lst@BeginDropInput#1{%
       for i = 1, utf.len(buf) do
         local c = utf.sub(buf, i, i)
         local cu = utf.byte(c)
-        if cu > 0x80 and tex.getcatcode(cu) \string~= 13 then
+        if cu >= 0x80 and tex.getcatcode(cu) \string~= 13 then
           ret = ret .. utf.char(1048575) % U+FFFFF
         end
         ret = ret .. c
       end
       return ret
     end, 'ltj.listings_unicode', 1)}%
+  \if@ltj@lst@double
+    \let\ltj@lst@hss@normal=\ltj@lst@hss@double
+  \else
+    \let\ltj@lst@hss@normal=\lst@hss
+  \fi
   \if@ltj@lst@vsraw
     \let\ltj@lst@hss=\ltj@lst@hss@ivs
   \else
-    \let\ltj@lst@hss=\lst@hss
+    \let\ltj@lst@hss=\ltj@lst@hss@normal
   \fi
 }
 \lst@AddToHook{ExitVars}{%
 \def\lstlistingname{ソースコード}
 \def\lstlistlistingname{ソースコード目次}
 %    \end{修正事項}
-\endinput
\ No newline at end of file
+\endinput
index df98305..0f0243b 100644 (file)
Binary files a/test/test13-listings.pdf and b/test/test13-listings.pdf differ
index bc748d7..c6b3c34 100644 (file)
@@ -2,9 +2,8 @@
 \documentclass{article}
 
 \usepackage{luatexja-fontspec}
-\usepackage{listings,color,showexpl}
-\usepackage{luatexja-otf}
-\directlua{luatexja.otf.enable_ivs()}
+\usepackage{listings,color,showexpl,comment}
+\usepackage{luatexja-otf}\directlua{luatexja.otf.enable_ivs()}
 \usepackage
 [
        papersize={100mm,100mm},
@@ -96,15 +95,20 @@ the first line of the listing is not rendered.
 \textbf{Ticket \#29311}
 
 \begin{env}{\relax}
-長い長い長い長い長い長い長い長い長い長い長い長い#い長い
-長い長い長い長い長い長い長い長い長い長い長い長aaaa#::い長い
-長い長い長い長い長い長い長い長い長い長い長い長い,長い長い
-長い長い長い長い長い長い長い長い長い長い長い長aa,::い長い
-長い長い長い長い長い長い長い長い長い長い長い長,,::い長い
+長い長い長い長い長い長い長い長い長い長い長い長aaa長い::い長い
+長い長い長い長い長い長い長い長い長い長い長い長aaaa長い::い長い
+長い長い長い長い長い長い長い長い長い長い長い長い長い,長い長い
+あ長い長い長い長い長い長い長い長い長い長い長い長い長い,長い長い
+長い長い長い長い長い長い長い長い長い長い長い長い長a,::い長い
+長い長い長い長い長い長い長い長い長い長い長い長い長aa,::い長い
+長い長い長い長い長い長い長い長い長い長い長い長い長aaa,::い長い
+長い長い長い長い長い長い長い長い長い長い長い長い長aaaa,::い長い
+長い長い長い長い長い長い長い長い長い長い長い長い長い,,::い長い
 長い長い長い長い長い長い長い長い長い長い長い長(い長い
 長い長い長い長い長い長い長い長い長い長い長いaa(い長い
 長い長い長い長い長い長い長い長い長い長い長い長(aa長い
 長い長い長い長い長い長い長い長い長い長い長い長い)(長い
+あ長い長い長い長い長い長い長い長い長い長い長い長い)(長い
 \end{env}
 
 \newpage
@@ -147,9 +151,37 @@ IVS対応2: \texttt{vsraw=true}
 1葛󠄀城,葛󠄁飾アイウ
 \end{LTXexample}
 
+\newpage
+
+下の行において,最初の「1」の場所がずれてしまうのは半ば仕方がないとも言える.
+1行目では,「1234567890」が前後・文字間に計11箇所の等量の空白を入れて10全角の領域に
+出力されているのに対し,2,~3行目では「1」が全角幅に左右中央で出力されているからである.
 \begin{lstlisting}[escapechar=\%,vsraw, basewidth=1\zw, basicstyle=\tt]
 1234567890
 1あ,23
 1あ2,3
+1234567890
+\end{lstlisting}
+
+\texttt{doubleletterspace}オプションを指定すると,出力単位中の文字と文字の間隔を2倍にするため,
+下の例の「1」のように,各文字の垂直位置が揃いやすくなる.
+\begin{lstlisting}[escapechar=\%,doubleletterspace, basewidth=1\zw, basicstyle=\tt]
+1234567890
+1あ,23
+1あ2,3
+1234567890
 \end{lstlisting}
+
+
+\newpage
+\textbf{Ticket \#34786}
+\ltjsetparameter{autoxspacing=false}
+
+foo \lstinline[basicstyle=\tt]!bar! baz あ
+あ\lstinline[basicstyle=\tt]{bar}hoge
+
+foo \lstinline[basicstyle=\tt]!あbar! baz あ
+あ\lstinline[basicstyle=\tt]{いbar}hoge
+
+
 \end{document}