OSDN Git Service

4e2c8c28f9b162c292efd8143364c50a7a093f3e
[luatex-ja/luatexja.git] / test / test13-listings.tex
1 %#!lualatex
2 \documentclass{article}
3
4 \usepackage{luatexja-fontspec,amsmath}
5 \usepackage{listings,color,showexpl,comment}
6 \usepackage{luatexja-otf}\directlua{luatexja.otf.enable_ivs()}
7 \usepackage
8 [
9         papersize={100mm,100mm},
10         hmargin={5mm,5mm},
11         vmargin={5mm,5mm}
12 ]{geometry}
13 \pagestyle{empty}
14
15 \lstset
16 {
17         language=sh, extendedchars=false,
18         backgroundcolor=\color[gray]{.75},
19         breaklines=true,
20         explpreset={columns=fixed},
21     basewidth={0.5\zw, 0.45em},
22         numbers=left,numberstyle=\tiny, numbersep=2pt,
23 }
24
25 \lstnewenvironment{env}[1]
26 {
27         \ifx\relax#1\else
28         \renewcommand{\lstlistingname}{ex}
29         \lstset
30         {
31                 caption=#1,
32         }
33         \fi
34 }{}
35 \DeclareKanjiFamily{JY3}{koz}{}
36 \DeclareFontShape{JY3}{koz}{m}{n}{<-> s * [1.2] KozMinPr6N-Regular:jfm=ujis}{}
37 \DeclareFontShape{JY3}{koz}{m}{sl}{<-> s * [1.2] psft:Ryumin-Light:jfm=ujis;slant=0.167}{}
38 \DeclareFontShape{JY3}{koz}{m}{it}{<-> ssub* koz/m/sl}{}
39 \def\mcdefault{koz}
40
41 \setmainfont{TeX Gyre Pagella}
42 \setmonofont{TeX Gyre Cursor}
43 \def\cs#1{\hbox{\texttt{\textbackslash #1}}}
44 \begin{document}
45
46 This test file is based on a.tex\footnote{This can be downloaded from {\tt https://gist.github.com/1574793}.} by x19290.
47
48
49 \textbf{SOLVED}: bad folding and not slanted problems are common in pLaTeX and LuaTeX-ja.
50
51 The cause of the latter problem is that Japanese fonts don't have italic shape by default.
52 In this document, we define them by
53 \begin{lstlisting}[language={[AlLaTeX]TeX}, basicstyle=\ttfamily]
54 \DeclareFontShape{JY3}{mc}{m}{sl}{<-> s * [0.92489] psft:Ryumin-Light:jfm=ujis;slant=0.167}{}
55 \DeclareFontShape{JY3}{mc}{m}{it}{<-> ssub* mc/m/sl}{}
56 \end{lstlisting}
57 \newpage
58
59 We also avoid white band problem, by setting the value of \cs{lineskiplimit} to
60 \begin{multline}
61  -\min(\cs{cht}-\cs{ht}\cs{strutbox}, 0)\\
62  -\min(\cs{cdp}-\cs{dp}\cs{strutbox}, 0).
63 \end{multline}
64
65
66 \begin{env}{\relax}
67 #!/bin/sh
68 #長い長い長い長い長い長い長い長い長い長い長い長い長い長い長い長い
69 長い長い長い長い長い長い長い長い長い長い長い長い,長い長い長い長い長い長い
70 #長い長い長い長い長い長い長い長い長い長い長い長い,長い長い長い長い長い長い
71 #I.長い長い長い長い長い長い長い長い長い長い長い長い長い長い長い長いI
72 長い長い長い長い長い長い長い長い長い長い長い長い長い長い長い長い
73 #IIII IIII IIII IIII IIII IIII IIII IIII IIII IIII IIII IIII IIII IIII IIII IIII
74 IIII IIII IIII IIII IIII IIII IIII IIII IIII IIII IIII IIII IIII IIII IIII IIII
75 \end{env}
76
77 \newpage
78
79 \textbf{SOLVED}: LuaTeX-ja specific problem:
80 when the \emph{begin} line of a listings environment ends with JAchar,
81 the first line of the listing is not rendered.
82
83 \begin{env}{problem; shebang not rendered --- 問題}
84 #!/bin/bash
85 :
86 \end{env}
87
88 \begin{LTXexample}[language=TeX]
89 え!1あ,い・あ)う(え
90 え!2あ
91 \end{LTXexample}
92
93 \lstinputlisting{test13-listings.tmp}
94
95 \begin{lstlisting}
96 え!1あアイウエオ
97 え!2あ
98 \end{lstlisting}
99 \newpage
100 \textbf{Ticket \#29311}
101
102 \begin{env}{\relax}
103 長い長い長い長い長い長い長い長い長い長い長い長aaa長い::い長い
104 長い長い長い長い長い長い長い長い長い長い長い長aaaa長い::い長い
105 長い長い長い長い長い長い長い長い長い長い長い長い長い,長い長い
106 あ長い長い長い長い長い長い長い長い長い長い長い長い長い,長い長い
107 長い長い長い長い長い長い長い長い長い長い長い長い長a,::い長い
108 長い長い長い長い長い長い長い長い長い長い長い長い長aa,::い長い
109 長い長い長い長い長い長い長い長い長い長い長い長い長aaa,::い長い
110 長い長い長い長い長い長い長い長い長い長い長い長い長aaaa,::い長い
111 長い長い長い長い長い長い長い長い長い長い長い長い長い,,::い長い
112 長い長い長い長い長い長い長い長い長い長い長い長(い長い
113 長い長い長い長い長い長い長い長い長い長い長いaa(い長い
114 長い長い長い長い長い長い長い長い長い長い長い長(aa長い
115 長い長い長い長い長い長い長い長い長い長い長い長い)(長い
116 あ長い長い長い長い長い長い長い長い長い長い長い長い)(長い
117 \end{env}
118
119 \newpage
120 \textbf{Ticket \#29604}
121
122 \setmonofont{DejaVu Sans Mono}
123 \ltjsetparameter{jacharrange={-2,-3,-8}}
124 ギリシャ文字欧文扱い
125
126 \begin{lstlisting}[basewidth=.5em,basicstyle=\tt, emph={TeX}, emphstyle=\color{red}]
127 01234567890123456789
128 !あ!漢!α!×!
129 \TeX はギリシャ文字のΤ-Ε-Χ(タウ・イプシロン・カイ)であるから、……
130 \TeX is an abbreviation of τέχνη (ΤΕΧΝΗ – technē).
131 \end{lstlisting}
132
133 \ltjsetparameter{jacharrange={+2,+8,+3}}
134 ギリシャ文字和文扱い
135
136 \begin{lstlisting}[basewidth=.5em,basicstyle=\tt, emph={TeX}, emphstyle=\color{red}]
137 01234567890123456789
138 !あ!漢!α!×!
139 \TeX はギリシャ文字のΤ-Ε-Χ(タウ・イプシロン・カイ)であるから、……
140 \TeX is an abbreviation of τέχνη (ΤΕΧΝΗ – technē).
141 \end{lstlisting}
142
143 \newpage
144 IVS対応1: \texttt{vsraw=false} (default)
145
146 \begin{LTXexample}[escapechar=\%, basicstyle=\tt]
147 1234567890
148 1葛󠄀城,葛󠄁飾
149 󠄀a
150 \end{LTXexample}
151
152 IVS対応2: \texttt{vsraw=true}
153
154 \begin{LTXexample}[escapechar=\%,vsraw, basicstyle=\tt]
155 1234567890
156 1葛󠄀城,葛󠄁飾アイウ
157 \end{LTXexample}
158
159 \newpage
160
161 下の行において,最初の「1」の場所がずれてしまうのは半ば仕方がないとも言える.
162 1行目では,「1234567890」が前後・文字間に計11箇所の等量の空白を入れて10全角の領域に
163 出力されているのに対し,2,~3行目では「1」が全角幅に左右中央で出力されているからである.
164 \begin{lstlisting}[escapechar=\%,vsraw, basewidth=1\zw, basicstyle=\tt]
165 1234567890
166 1あ,23
167 1あ2,3
168 1234567890
169 \end{lstlisting}
170
171 \texttt{doubleletterspace}オプションを指定すると,出力単位中の文字と文字の間隔を2倍にするため,
172 下の例の「1」のように,各文字の垂直位置が揃いやすくなる.
173 \begin{lstlisting}[escapechar=\%,doubleletterspace, basewidth=1\zw, basicstyle=\tt]
174 1234567890
175 1あ,23
176 1あ2,3
177 1)2,3
178 1234567890
179 \end{lstlisting}
180
181
182 \newpage
183 \textbf{Ticket \#34786}
184 \ltjsetparameter{autoxspacing=false}
185
186 foo \lstinline[basicstyle=\tt]!bar! baz あ
187 あ\lstinline[basicstyle=\tt]{bar}hoge
188
189 foo \lstinline[basicstyle=\tt]!あbar! baz あ
190 あ\lstinline[basicstyle=\tt]{いbar}hoge
191
192 \bigskip
193 \textbf{Ticket \#35484}
194
195 \colorbox{red}{\lstinline!aiueoxyz!}
196 \end{document}