Commit | Line | Data |
43c344fe |
1 | |
43c344fe |
2 | # Test that Pod::LaTeX works |
3 | # This test relies on the DATA filehandle |
4 | # DATA contains the latex that is used for comparison |
5 | # and the pod that was used to generate it. The two |
6 | # are separated by '=pod' |
7 | # Note that if the translator is adjusted the output tex |
8 | # will probably not match what is currently there. You |
9 | # will need to adjust it to match (assuming it is correct). |
10 | |
7e2c3868 |
11 | use Test; |
43c344fe |
12 | use strict; |
13 | |
7e2c3868 |
14 | BEGIN { plan tests => 172 } |
15 | |
43c344fe |
16 | use Pod::LaTeX; |
17 | |
7e2c3868 |
18 | # The link parsing changed between v0.22 and v0.30 of Pod::ParseUtils |
19 | use Pod::ParseUtils; |
20 | my $linkver = $Pod::ParseUtils::VERSION; |
21 | |
43c344fe |
22 | # Set up an END block to remove the test output file |
7e2c3868 |
23 | END { |
24 | unlink "test.tex"; |
25 | }; |
43c344fe |
26 | |
27 | ok(1); |
28 | |
29 | # First thing to do is to read the expected output from |
30 | # the DATA filehandle and store it in a scalar. |
31 | # Do this until we read an =pod |
32 | my @reference; |
33 | while (my $line = <DATA>) { |
34 | last if $line =~ /^=pod/; |
35 | push(@reference,$line); |
36 | } |
37 | |
38 | # Create a new parser |
39 | my $parser = Pod::LaTeX->new; |
40 | ok($parser); |
41 | $parser->Head1Level(1); |
42 | # Add the preamble but remember not to compare the timestamps |
43 | $parser->AddPreamble(1); |
44 | $parser->AddPostamble(1); |
45 | |
46 | # For a laugh add a table of contents |
47 | $parser->TableOfContents(1); |
48 | |
49 | # Create an output file |
50 | open(OUTFH, "> test.tex" ) or die "Unable to open test tex file: $!\n"; |
51 | |
52 | # Read from the DATA filehandle and write to a new output file |
53 | # Really want to write this to a scalar |
54 | $parser->parse_from_filehandle(\*DATA,\*OUTFH); |
55 | |
56 | close(OUTFH) or die "Error closing OUTFH test.tex: $!\n"; |
57 | |
58 | # Now read in OUTFH and compare |
59 | open(INFH, "< test.tex") or die "Unable to read test tex file: $!\n"; |
60 | my @output = <INFH>; |
61 | |
62 | ok(@output, @reference); |
63 | for my $i (0..$#reference) { |
64 | next if $reference[$i] =~ /^%%/; # skip timestamp comments |
7e2c3868 |
65 | |
66 | # if we are running a new version of Pod::ParseUtils we need |
67 | # to change the link text. This is a kluge until we drop support |
68 | # for older versions of Pod::ParseUtils |
69 | if ($linkver < 0.29 && $output[$i] =~ /manpage/) { |
70 | # convert our expectations from new to old new format |
71 | $reference[$i] =~ s/Standard link: \\emph\{Pod::LaTeX\}/Standard link: the \\emph\{Pod::LaTeX\} manpage/; |
72 | $reference[$i] =~ s/\\textsf\{sec\} in \\emph\{Pod::LaTeX\}/the section on \\textsf\{sec\} in the \\emph\{Pod::LaTeX\} manpage/; |
73 | } |
43c344fe |
74 | ok($output[$i], $reference[$i]); |
75 | } |
76 | |
77 | close(INFH) or die "Error closing INFH test.tex: $!\n"; |
78 | |
79 | |
80 | __DATA__ |
81 | \documentclass{article} |
7e2c3868 |
82 | \usepackage[T1]{fontenc} |
83 | \usepackage{textcomp} |
43c344fe |
84 | |
7e2c3868 |
85 | %% Latex generated from POD in document (unknown) |
43c344fe |
86 | %% Using the perl module Pod::LaTeX |
7e2c3868 |
87 | %% Converted on Sat Apr 5 21:16:02 2003 |
43c344fe |
88 | |
89 | |
90 | \usepackage{makeidx} |
91 | \makeindex |
92 | |
93 | |
94 | \begin{document} |
95 | |
96 | \tableofcontents |
97 | |
98 | \section{Introduction\label{Introduction}\index{Introduction}} |
99 | \begin{itemize} |
100 | |
101 | \item |
102 | |
103 | Always check the return codes of system calls. Good error messages should |
104 | go to STDERR, include which program caused the problem, what the failed |
105 | system call and arguments were, and (\textbf{very important}) should contain |
106 | the standard system error message for what went wrong. Here's a simple |
107 | but sufficient example: |
108 | |
109 | \begin{verbatim} |
110 | opendir(D, $dir) or die "can't opendir $dir: $!"; |
111 | \end{verbatim} |
112 | |
113 | \item |
114 | |
115 | Line up your transliterations when it makes sense: |
116 | |
117 | \begin{verbatim} |
118 | tr [abc] |
119 | [xyz]; |
120 | \end{verbatim} |
121 | |
122 | |
123 | The above should be aligned since it includes an embedded tab. |
124 | |
125 | |
126 | \item |
127 | |
128 | Think about reusability. Why waste brainpower on a one-shot when you |
129 | might want to do something like it again? Consider generalizing your |
130 | code. Consider writing a module or object class. Consider making your |
131 | code run cleanly with \texttt{use strict} and \texttt{-w} (or \texttt{use warnings} in |
132 | Perl 5.6) in effect. Consider giving away your code. Consider changing |
133 | your whole world view. Consider... oh, never mind. |
134 | |
135 | |
136 | \item |
137 | |
138 | Be consistent. |
139 | |
140 | |
141 | \item |
142 | |
143 | Be nice. |
144 | |
145 | \end{itemize} |
146 | \section{Links\label{Links}\index{Links}} |
147 | |
148 | |
149 | This link should just include one word: \textsf{Pod::LaTeX} |
150 | |
151 | |
152 | |
153 | This link should include the text \texttt{test} even though |
154 | it refers to \texttt{Pod::LaTeX}: \textsf{test}. |
155 | |
156 | |
157 | |
9c6ed6d7 |
158 | Standard link: \emph{Pod::LaTeX}. |
43c344fe |
159 | |
160 | |
161 | |
9c6ed6d7 |
162 | Now refer to an external section: \textsf{sec} in \emph{Pod::LaTeX} |
43c344fe |
163 | |
164 | \section{Lists\label{Lists}\index{Lists}} |
165 | |
166 | |
167 | Test description list with long lines |
168 | |
169 | \begin{description} |
170 | |
171 | \item[Some short text] \mbox{} |
172 | |
173 | Some additional para. |
174 | |
175 | \begin{itemize} |
176 | |
177 | \item |
178 | |
179 | Nested itemized list |
180 | |
181 | |
182 | \item |
183 | |
184 | Second item |
185 | |
186 | \end{itemize} |
187 | |
188 | \item[some longer text than that] \mbox{} |
189 | |
190 | and again. |
191 | |
192 | |
193 | \item[this text is even longer and greater than] \textbf{40 characters} |
194 | |
195 | Some more content for the item. |
196 | |
197 | |
198 | \item[this is some text with \textit{something across}] \textbf{the 40 char boundary} |
199 | |
200 | This is item content. |
201 | |
202 | \end{description} |
7e2c3868 |
203 | |
204 | |
205 | And this should be an enumerated list without any cruft after the numbers or additional numbers at all. |
206 | |
207 | \begin{enumerate} |
208 | |
209 | \item |
210 | |
211 | item 1 |
212 | |
213 | |
214 | \item |
215 | |
216 | item 2 |
217 | |
218 | \end{enumerate} |
43c344fe |
219 | \section{Escapes\label{Escapes}\index{Escapes}} |
220 | |
221 | |
222 | Test some normal escapes such as $<$ (lt) and $>$ (gt) and $|$ (verbar) and |
223 | \texttt{\~{}} (tilde) and \& (amp) as well as $<$ (Esc lt) and $|$ (Esc |
7e2c3868 |
224 | verbar) and \textfractionsolidus{} (Esc sol) and $>$ (Esc gt) and \& (Esc amp) |
43c344fe |
225 | and " (Esc quot) and even $\alpha$ (Esc alpha). |
226 | |
227 | \section{For blocks\label{For_blocks}\index{For blocks}} |
228 | Some latex code \textbf{here}. |
229 | |
230 | |
231 | |
232 | Some text that should appear. |
233 | |
234 | |
235 | |
236 | Some more text that should appear |
237 | |
238 | Some latex in a \textsf{begin block} |
239 | |
240 | and some more |
241 | |
242 | \begin{equation} |
243 | a = \frac{3}{2} |
244 | \end{equation} |
245 | |
246 | |
247 | |
248 | Back to pod. |
249 | |
250 | \printindex |
251 | |
252 | \end{document} |
253 | =pod |
254 | |
255 | =head1 Introduction |
256 | |
257 | =over 4 |
258 | |
259 | =item * |
260 | |
261 | Always check the return codes of system calls. Good error messages should |
262 | go to STDERR, include which program caused the problem, what the failed |
263 | system call and arguments were, and (B<very important>) should contain |
264 | the standard system error message for what went wrong. Here's a simple |
265 | but sufficient example: |
266 | |
267 | opendir(D, $dir) or die "can't opendir $dir: $!"; |
268 | |
269 | =item * |
270 | |
271 | Line up your transliterations when it makes sense: |
272 | |
273 | tr [abc] |
274 | [xyz]; |
275 | |
276 | The above should be aligned since it includes an embedded tab. |
277 | |
278 | =item * |
279 | |
280 | Think about reusability. Why waste brainpower on a one-shot when you |
281 | might want to do something like it again? Consider generalizing your |
282 | code. Consider writing a module or object class. Consider making your |
283 | code run cleanly with C<use strict> and C<-w> (or C<use warnings> in |
284 | Perl 5.6) in effect. Consider giving away your code. Consider changing |
285 | your whole world view. Consider... oh, never mind. |
286 | |
287 | =item * |
288 | |
289 | Be consistent. |
290 | |
291 | =item * |
292 | |
293 | Be nice. |
294 | |
295 | =back |
296 | |
297 | =head1 Links |
298 | |
299 | This link should just include one word: L<Pod::LaTeX|Pod::LaTeX> |
300 | |
301 | This link should include the text C<test> even though |
302 | it refers to C<Pod::LaTeX>: L<test|Pod::LaTeX>. |
303 | |
304 | Standard link: L<Pod::LaTeX>. |
305 | |
306 | Now refer to an external section: L<Pod::LaTeX/"sec"> |
307 | |
308 | |
309 | =head1 Lists |
310 | |
311 | Test description list with long lines |
312 | |
313 | =over 4 |
314 | |
315 | =item Some short text |
316 | |
317 | Some additional para. |
318 | |
319 | =over 4 |
320 | |
321 | =item * |
322 | |
323 | Nested itemized list |
324 | |
325 | =item * |
326 | |
327 | Second item |
328 | |
329 | =back |
330 | |
331 | =item some longer text than that |
332 | |
333 | and again. |
334 | |
335 | =item this text is even longer and greater than 40 characters |
336 | |
337 | Some more content for the item. |
338 | |
339 | =item this is some text with I<something across> the 40 char boundary |
340 | |
341 | This is item content. |
342 | |
343 | =back |
344 | |
7e2c3868 |
345 | And this should be an enumerated list without any cruft after the numbers or additional numbers at all. |
346 | |
347 | =over 4 |
348 | |
349 | =item 1) |
350 | |
351 | item 1 |
352 | |
353 | =item 2. |
354 | |
355 | item 2 |
356 | |
357 | =back |
358 | |
43c344fe |
359 | =head1 Escapes |
360 | |
361 | Test some normal escapes such as < (lt) and > (gt) and | (verbar) and |
362 | ~ (tilde) and & (amp) as well as E<lt> (Esc lt) and E<verbar> (Esc |
363 | verbar) and E<sol> (Esc sol) and E<gt> (Esc gt) and E<amp> (Esc amp) |
364 | and E<quot> (Esc quot) and even E<alpha> (Esc alpha). |
365 | |
366 | =head1 For blocks |
367 | |
368 | =for latex |
369 | Some latex code \textbf{here}. |
370 | |
371 | Some text that should appear. |
372 | |
373 | =for comment |
374 | Should not print anything |
375 | |
376 | Some more text that should appear |
377 | |
378 | =begin latex |
379 | |
380 | Some latex in a \textsf{begin block} |
381 | |
382 | and some more |
383 | |
384 | \begin{equation} |
385 | a = \frac{3}{2} |
386 | \end{equation} |
387 | |
388 | =end latex |
389 | |
390 | Back to pod. |
391 | |
392 | =cut |