21 |
from types import ListType |
from types import ListType |
22 |
from docutils import writers, nodes, languages |
from docutils import writers, nodes, languages |
23 |
|
|
24 |
# country code by a.schlock. |
#### We diss babel, because /cite didn't work :) |
25 |
# partly manually converted from iso and babel stuff, dialects and some |
## country code by a.schlock. |
26 |
# languages remain missing (austrian, UKEnglish, brazillian etc.) |
## partly manually converted from iso and babel stuff, dialects and some |
27 |
_ISO639_TO_BABEL = { |
## languages remain missing (austrian, UKEnglish, brazillian etc.) |
28 |
'no': 'norsk', #XXX added by hand ( forget about nynorsk?) |
#_ISO639_TO_BABEL = { |
29 |
'gd': 'scottish', #XXX added by hand |
# 'no': 'norsk', #XXX added by hand ( forget about nynorsk?) |
30 |
'hu': 'magyar', #XXX added by hand |
# 'gd': 'scottish', #XXX added by hand |
31 |
'pt': 'portuguese',#XXX added by hand |
# 'hu': 'magyar', #XXX added by hand |
32 |
'sl': 'slovenian', |
# 'pt': 'portuguese',#XXX added by hand |
33 |
'af': 'afrikaans', |
# 'sl': 'slovenian', |
34 |
'bg': 'bulgarian', |
# 'af': 'afrikaans', |
35 |
'br': 'breton', |
# 'bg': 'bulgarian', |
36 |
'ca': 'catalan', |
# 'br': 'breton', |
37 |
'cs': 'czech', |
# 'ca': 'catalan', |
38 |
'cy': 'welsh', |
# 'cs': 'czech', |
39 |
'da': 'danish', |
# 'cy': 'welsh', |
40 |
|
# 'da': 'danish', |
41 |
'de': 'ngerman', #XXX rather than german |
|
42 |
'el': 'greek', |
# 'de': 'ngerman', #XXX rather than german |
43 |
'en': 'english', |
# 'el': 'greek', |
44 |
'eo': 'esperanto', |
# 'en': 'english', |
45 |
'es': 'spanish', |
# 'eo': 'esperanto', |
46 |
'et': 'estonian', |
# 'es': 'spanish', |
47 |
'eu': 'basque', |
# 'et': 'estonian', |
48 |
'fi': 'finnish', |
# 'eu': 'basque', |
49 |
'ga': 'irish', |
# 'fi': 'finnish', |
50 |
'gl': 'galician', |
# 'ga': 'irish', |
51 |
'he': 'hebrew', |
# 'gl': 'galician', |
52 |
'hr': 'croatian', |
# 'he': 'hebrew', |
53 |
'hu': 'hungarian', |
# 'hr': 'croatian', |
54 |
'is': 'icelandic', |
# 'hu': 'hungarian', |
55 |
'it': 'italian', |
# 'is': 'icelandic', |
56 |
'la': 'latin', |
# 'it': 'italian', |
57 |
'nl': 'dutch', |
# 'la': 'latin', |
58 |
'pl': 'polish', |
# 'nl': 'dutch', |
59 |
'pt': 'portuguese', |
# 'pl': 'polish', |
60 |
'ro': 'romanian', |
# 'pt': 'portuguese', |
61 |
'ru': 'russian', |
# 'ro': 'romanian', |
62 |
'sk': 'slovak', |
# 'ru': 'russian', |
63 |
'sr': 'serbian', |
# 'sk': 'slovak', |
64 |
'sv': 'swedish', |
# 'sr': 'serbian', |
65 |
'tr': 'turkish', |
# 'sv': 'swedish', |
66 |
'uk': 'ukrainian' |
# 'tr': 'turkish', |
67 |
} |
# 'uk': 'ukrainian' |
68 |
|
# } |
69 |
|
|
70 |
class Writer(writers.Writer): |
class Writer(writers.Writer): |
71 |
|
|
197 |
# for pdflatex some other package. pslatex |
# for pdflatex some other package. pslatex |
198 |
|
|
199 |
latex_head = '\\documentclass[%s]{%s}\n' |
latex_head = '\\documentclass[%s]{%s}\n' |
200 |
encoding = '\\usepackage[latin1]{inputenc}\n' |
# encoding = '\\usepackage[latin1]{inputenc}\n' |
201 |
linking = '\\usepackage{hyperref}\n' |
linking = '\\usepackage{hyperref}\n' |
202 |
geometry = '\\usepackage[%s,margin=%s,nohead]{geometry}\n' |
# geometry = '\\usepackage[%s,margin=%s,nohead]{geometry}\n' |
203 |
stylesheet = '\\input{%s}\n' |
stylesheet = '\\input{%s}\n' |
204 |
# add a generated on day , machine by user using docutils version. |
# add a generated on day , machine by user using docutils version. |
205 |
generator = '%% generator Docutils: http://docutils.sourceforge.net/\n' |
generator = '%% generator Docutils: http://docutils.sourceforge.net/\n' |
226 |
self.language = languages.get_language(settings.language_code) |
self.language = languages.get_language(settings.language_code) |
227 |
self.babel = Babel(settings.language_code) |
self.babel = Babel(settings.language_code) |
228 |
self.author_separator = self.language.author_separators[0] |
self.author_separator = self.language.author_separators[0] |
229 |
if _ISO639_TO_BABEL.has_key(settings.language_code): |
# if _ISO639_TO_BABEL.has_key(settings.language_code): |
230 |
self.d_options += ',%s' % \ |
# self.d_options += ',%s' % \ |
231 |
_ISO639_TO_BABEL[settings.language_code] |
# _ISO639_TO_BABEL[settings.language_code] |
232 |
self.head_prefix = [ |
self.head_prefix = [ |
233 |
self.latex_head % (self.d_options,self.d_class), |
self.latex_head % (self.d_options,self.d_class), |
234 |
#/cite didn't work with babel (jvk) |
#/cite didn't work with babel (jvk) |
235 |
# '\\usepackage{babel}\n', # language is in documents settings. |
# '\\usepackage{babel}\n', # language is in documents settings. |
236 |
'\\usepackage{shortvrb}\n', # allows verb in footnotes. |
'\\usepackage{shortvrb}\n', # allows verb in footnotes. |
237 |
self.encoding, |
# self.encoding, |
238 |
# * tabularx: for docinfo, automatic width of columns, always on one page. |
# * tabularx: for docinfo, automatic width of columns, always on one page. |
239 |
'\\usepackage{tabularx}\n', |
'\\usepackage{tabularx}\n', |
240 |
'\\usepackage{longtable}\n', |
'\\usepackage{longtable}\n', |
250 |
'\\usepackage{multirow}\n', |
'\\usepackage{multirow}\n', |
251 |
self.linking, |
self.linking, |
252 |
# geometry and fonts might go into style.tex. |
# geometry and fonts might go into style.tex. |
253 |
self.geometry % (self.d_paper, self.d_margins), |
# self.geometry % (self.d_paper, self.d_margins), |
254 |
# |
# |
255 |
self.generator, |
self.generator, |
256 |
# admonition width and docinfo tablewidth |
# admonition width and docinfo tablewidth |
257 |
'\\newlength{\\admwidth}\n\\addtolength{\\admwidth}{0.9\\textwidth}\n', |
'\\newlength{\\admwidth}\n\\addtolength{\\admwidth}{0.9\\textwidth}\n', |
258 |
# optionlist environment |
# # optionlist environment |
259 |
'\\newcommand{\\optionlistlabel}[1]{\\bf #1 \\hfill}\n' |
'\\newcommand{\\optionlistlabel}[1]{\\bf #1 \\hfill}\n' |
260 |
'\\newenvironment{optionlist}[1]\n' |
'\\newenvironment{optionlist}[1]\n', |
261 |
'{\\begin{list}{}\n' |
# '{\\begin{list}{}\n' |
262 |
' {\\setlength{\\labelwidth}{#1}\n' |
# ' {\\setlength{\\labelwidth}{#1}\n' |
263 |
' \\setlength{\\rightmargin}{1cm}\n' |
# ' \\setlength{\\rightmargin}{1cm}\n' |
264 |
' \\setlength{\\leftmargin}{\\rightmargin}\n' |
# ' \\setlength{\\leftmargin}{\\rightmargin}\n' |
265 |
' \\addtolength{\\leftmargin}{\\labelwidth}\n' |
# ' \\addtolength{\\leftmargin}{\\labelwidth}\n' |
266 |
' \\addtolength{\\leftmargin}{\\labelsep}\n' |
# ' \\addtolength{\\leftmargin}{\\labelsep}\n' |
267 |
' \\renewcommand{\\makelabel}{\\optionlistlabel}}\n' |
# ' \\renewcommand{\\makelabel}{\\optionlistlabel}}\n' |
268 |
'}{\\end{list}}\n', |
# '}{\\end{list}}\n', |
269 |
## stylesheet is last: so it might be possible to overwrite defaults. |
## stylesheet is last: so it might be possible to overwrite defaults. |
270 |
self.stylesheet % (self.d_stylesheet_path), |
self.stylesheet % (self.d_stylesheet_path), |
271 |
] |
] |