また,どちらのファミリでもイタリック体・スラント体は定義されない.
%</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>
\ref{ssec-altfont}節の \cs{ltjdeclarealtfont} と,その\LaTeX 版の\
\cs{DeclareAlternateKanjiFont}(\ref{ssec-nfsspat}節)を参照せよ.
%</ja>
+
\end{itemize}
%<*en>
意識する必要はない.
%</ja>
-%<en>\subsection{Notes}
+%<en>\subsection{Notes and additional keys}
%<ja>\subsection{注意}
%<*en>
\paragraph{Escaping to \LaTeX}
「\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} 環境などの内部にある異体字セレクタを扱うため,
\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%
\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{文字種}
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:
\texttt{fontloader} の呼び出しでかなり時間を消費することから,
%%% to_table を使わなくしたことで,メモリ使用量は減った
IVS情報をキャッシュに保存することで2回目以降の実行時間を節約している.
+%</ja>
+%<*ja>
\section{複数フォントの「合成」(未完)}
-
\section{\LuaTeX-jaにおけるキャッシュ}
\Pkg{luaotfload}パッケージが,各TrueType・OpenTypeフォントの情報を
キャッシュとして保存しているのと同様の方法で,
%
\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}
%
\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
% 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 にする
%% 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
%% 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
% -----------------------------------------
%
% \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
%<*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}
%% 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
%% 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
\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
\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
\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},
\textbf{Ticket \#29311}
\begin{env}{\relax}
-長い長い長い長い長い長い長い長い長い長い長い長い#い長い
-長い長い長い長い長い長い長い長い長い長い長い長aaaa#::い長い
-長い長い長い長い長い長い長い長い長い長い長い長い,長い長い
-長い長い長い長い長い長い長い長い長い長い長い長aa,::い長い
-長い長い長い長い長い長い長い長い長い長い長い長,,::い長い
+長い長い長い長い長い長い長い長い長い長い長い長aaa長い::い長い
+長い長い長い長い長い長い長い長い長い長い長い長aaaa長い::い長い
+長い長い長い長い長い長い長い長い長い長い長い長い長い,長い長い
+あ長い長い長い長い長い長い長い長い長い長い長い長い長い,長い長い
+長い長い長い長い長い長い長い長い長い長い長い長い長a,::い長い
+長い長い長い長い長い長い長い長い長い長い長い長い長aa,::い長い
+長い長い長い長い長い長い長い長い長い長い長い長い長aaa,::い長い
+長い長い長い長い長い長い長い長い長い長い長い長い長aaaa,::い長い
+長い長い長い長い長い長い長い長い長い長い長い長い長い,,::い長い
長い長い長い長い長い長い長い長い長い長い長い長(い長い
長い長い長い長い長い長い長い長い長い長い長いaa(い長い
長い長い長い長い長い長い長い長い長い長い長い長(aa長い
長い長い長い長い長い長い長い長い長い長い長い長い)(長い
+あ長い長い長い長い長い長い長い長い長い長い長い長い)(長い
\end{env}
\newpage
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}