OSDN Git Service

lltjp-listings.sty: better alignment of punctuations marks
[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] HaranoAjiMincho-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 Note: we still have a white band if the first line is line-broken.
66
67 \begin{env}{\relax}
68 #!/bin/sh
69 #長い長い長い長い長い長い長い長い長い長い長い長い長い長い長い長い
70 長い長い長い長い長い長い長い長い長い長い長い長い,長い長い長い長い長い長い
71 #長い長い長い長い長い長い長い長い長い長い長い長い,長い長い長い長い長い長い
72 #I.長い長い長い長い長い長い長い長い長い長い長い長い長い長い長い長いI
73 長い長い長い長い長い長い長い長い長い長い長い長い長い長い長い長い
74 #IIII IIII IIII IIII IIII IIII IIII IIII IIII IIII IIII IIII IIII IIII IIII IIII
75 IIII IIII IIII IIII IIII IIII IIII IIII IIII IIII IIII IIII IIII IIII IIII IIII
76 \end{env}
77
78 \newpage
79
80 \textbf{SOLVED}: LuaTeX-ja specific problem:
81 when the \emph{begin} line of a listings environment ends with JAchar,
82 the first line of the listing is not rendered.
83
84 \begin{env}{problem; shebang not rendered --- 問題}
85 #!/bin/bash
86 :
87 \end{env}
88
89 \begin{LTXexample}[language=TeX]
90 え!1あ,い・あ)う(え
91 え!2あ
92 \end{LTXexample}
93
94 \lstinputlisting{test13-listings.tmp}
95
96 \begin{lstlisting}
97 え!1あアイウエオ
98 え!2あ
99 \end{lstlisting}
100 \newpage
101 \textbf{Ticket \#29311}
102
103 \begin{env}{\relax}
104 長い長い長い長い長い長い長い長い長い長い長い長aaa長い::い長い
105 長い長い長い長い長い長い長い長い長い長い長い長aaaa長い::い長い
106 長い長い長い長い長い長い長い長い長い長い長い長い長い,長い長い
107 あ長い長い長い長い長い長い長い長い長い長い長い長い長い,長い長い
108 長い長い長い長い長い長い長い長い長い長い長い長い長a,::い長い
109 長い長い長い長い長い長い長い長い長い長い長い長い長aa,::い長い
110 長い長い長い長い長い長い長い長い長い長い長い長い長aaa,::い長い
111 長い長い長い長い長い長い長い長い長い長い長い長い長aaaa,::い長い
112 長い長い長い長い長い長い長い長い長い長い長い長い長い,,::い長い
113 長い長い長い長い長い長い長い長い長い長い長い長(い長い
114 長い長い長い長い長い長い長い長い長い長い長いaa(い長い
115 長い長い長い長い長い長い長い長い長い長い長い長(aa長い
116 長い長い長い長い長い長い長い長い長い長い長い長い)(長い
117 あ長い長い長い長い長い長い長い長い長い長い長い長い)(長い
118 \end{env}
119
120 \newpage
121 \textbf{Ticket \#29604}
122
123 \setmonofont{DejaVu Sans Mono}
124 \ltjsetparameter{jacharrange={-2,-3,-8}}
125 ギリシャ文字欧文扱い
126
127 \begin{lstlisting}[basewidth=.5em,basicstyle=\tt, emph={TeX}, emphstyle=\color{red}]
128 01234567890123456789
129 !あ!漢!α!×!
130 \TeX はギリシャ文字のΤ-Ε-Χ(タウ・イプシロン・カイ)であるから、……
131 \TeX is an abbreviation of τέχνη (ΤΕΧΝΗ – technē).
132 \end{lstlisting}
133
134 \ltjsetparameter{jacharrange={+2,+8,+3}}
135 ギリシャ文字和文扱い
136
137 \begin{lstlisting}[basewidth=.5em,basicstyle=\tt, emph={TeX}, emphstyle=\color{red}]
138 01234567890123456789
139 !あ!漢!α!×!
140 \TeX はギリシャ文字のΤ-Ε-Χ(タウ・イプシロン・カイ)であるから、……
141 \TeX is an abbreviation of τέχνη (ΤΕΧΝΗ – technē).
142 \end{lstlisting}
143
144 \newpage
145 IVS対応1: \texttt{vsraw=false} (default)
146
147 \begin{LTXexample}[escapechar=\%, basicstyle=\tt]
148 123456789012345678
149 1葛󠄀城,葛󠄁飾
150 󠄀a
151 \end{LTXexample}
152
153 IVS対応2: \texttt{vsraw=true}
154
155 \begin{LTXexample}[escapechar=\%,vsraw, basicstyle=\tt]
156 123456789012345678
157 1葛󠄀城,葛󠄁飾アイウ
158 \end{LTXexample}
159
160 \newpage
161
162 下の行において,最初の「1」の場所がずれてしまうのは半ば仕方がないとも言える.
163 1行目では,「1234567890」が前後・文字間に計11箇所の等量の空白を入れて10全角の領域に
164 出力されているのに対し,2,~3行目では「1」が全角幅に左右中央で出力されているからである.
165 \begin{lstlisting}[escapechar=\%,vsraw, basewidth=1\zw, basicstyle=\tt]
166 1234567890
167 1あ,23
168 1あ2,3
169 1234567890
170 \end{lstlisting}
171
172 \texttt{doubleletterspace}オプションを指定すると,出力単位中の文字と文字の間隔を2倍にするため,
173 下の例の「1」のように,各文字の垂直位置が揃いやすくなる.
174 \begin{lstlisting}[escapechar=\%,doubleletterspace, basewidth=1\zw, basicstyle=\tt]
175 1234567890
176 1あ,23
177 1あ2,3
178 1)2,3
179 1234567890
180 \end{lstlisting}
181
182
183 \newpage
184 \textbf{Ticket \#34786}
185 \ltjsetparameter{autoxspacing=false}
186
187 foo \lstinline[basicstyle=\tt]!ba{}#shr! baz あ
188
189 あ\lstinline[basicstyle=\tt]{bar  s}hoge
190
191 あ\lstinline[basicstyle=\tt]{bar..{a}hoge
192
193 foo \lstinline[basicstyle=\tt\gtfamily]!あexit 0; #shbar! baz あ
194
195 あ\lstinline[basicstyle=\tt]{いbexit #sh$ar}hoge
196
197 \bigskip
198 \textbf{Ticket \#35484}
199
200 \colorbox{red}{\lstinline!aiu#sheoxyz!}
201 \colorbox{red}{\lstinline!あいexit 0;#shうえお!}
202
203
204 \colorbox{red}{\lstinline{aiu#sheoxyz}}
205 \colorbox{red}{\lstinline{あいexit 0;#shうえお}}
206
207 あおいうえお
208 \begin{lstlisting}[frame=single]
209 aiu
210 \end{lstlisting}
211 あいうえお
212
213 \bigskip
214 \textbf{Escape character}
215 \begin{lstlisting}[escapechar=\#,basicstyle=\ttfamily]
216 1234567890123457890
217 aiu# \textcolor{red}{e} #o#\textcolor{red}{ka}#ki
218 \end{lstlisting}
219
220
221 \newpage
222 \lstset{basewidth=0.75\zw,basicstyle=\ttfamily,doubleletterspace,backgroundcolor=}
223 \noindent
224 \def\A{\leavevmode\smash{\hbox to 0.75\zw{\kern-.0625mm\vrule height 0pt depth 200pt width 0.125mm\hss}}}%
225 \textcolor{cyan}{\A\A\A\A\A\A\A\A\A\A\A\A\A\A\A\A\A\A\A\A\A\A\A\A\A\A\A\A\A\A\A\A\A\A\A\A\A\A\A\A\A}%
226
227 \begin{lstlisting}
228 1234567890123456789012345
229 123(あいう(カンジabc
230 1234567890123456789012345
231 123あいう)(カンジabc
232 1234567890123456789012345
233 123あい:う(カンジabc
234 1234567890123456789012345
235 :H:
236 1234567890123456789012345
237 :HHHH:
238 1234567890123456789012345
239 1234567890123456789012345
240 \end{lstlisting}
241 \end{document}