Module: MaRuKu::Out::Latex

Includes:
Maruku::Defaults, REXML
Included in:
MDElement
Defined in:
lib/maruku.rb,
lib/maruku/output/to_latex.rb,
lib/maruku/output/to_latex_entities.rb

Overview

Functions for exporting to Latex

Constant Summary collapse

TexHeaders =
{
1=>'section',
2=>'subsection',
3=>'subsubsection',
4=>'paragraph'}
XML_TABLE =

The following is a conversion chart for html elements, courtesy of text2html

"
<chars>
  <char num='913' name='Alpha' convertTo='$A$' />
  <char num='914' name='Beta' convertTo='$B$' />
  <char num='915' name='Gamma' convertTo='$\\Gamma$' />
  <char num='916' name='Delta' convertTo='$\\Delta$' />
  <char num='917' name='Epsilon' convertTo='$E$' />
  <char num='918' name='Zeta' convertTo='$Z$' />
  <char num='919' name='Eta' convertTo='$H$' />
  <char num='920' name='Theta' convertTo='$\\Theta$' />
  <char num='921' name='Iota' convertTo='$I$' />
  <char num='922' name='Kappa' convertTo='$K$' />
  <char num='923' name='Lambda' convertTo='$\\Lambda$' />
  <char num='924' name='Mu' convertTo='$M$' />
  <char num='925' name='Nu' convertTo='$N$' />
  <char num='926' name='Xi' convertTo='$\\Xi$' />
  <char num='927' name='Omicron' convertTo='$O$' />
  <char num='928' name='Pi' convertTo='$\\Pi$' />
  <char num='929' name='Rho' convertTo='$P$' />
  <char num='931' name='Sigma' convertTo='$\\Sigma$' />
  <char num='932' name='Tau' convertTo='$T$' />
  <char num='933' name='Upsilon' convertTo='$Y$' />
  <char num='934' name='Phi' convertTo='$\\Phi$' />
  <char num='935' name='Chi' convertTo='$X$' />
  <char num='936' name='Psi' convertTo='$\\Psi$' />
  <char num='937' name='Omega' convertTo='$\\Omega$' />
  <char num='945' name='alpha' convertTo='$\\alpha$' />
  <char num='946' name='beta' convertTo='$\\beta$' />
  <char num='947' name='gamma' convertTo='$\\gamma$' />
  <char num='948' name='delta' convertTo='$\\delta$' />
  <char num='949' name='epsilon' convertTo='$\\epsilon$' />
  <char num='950' name='zeta' convertTo='$\\zeta$' />
  <char num='951' name='eta' convertTo='$\\eta$' />
  <char num='952' name='theta' convertTo='$\\theta$' />
  <char num='953' name='iota' convertTo='$\\iota$' />
  <char num='954' name='kappa' convertTo='$\\kappa$' />
  <char num='955' name='lambda' convertTo='$\\lambda$' />
  <char num='956' name='mu' convertTo='$\\mu$' />

  <char num='957' name='nu' convertTo='$\\nu$' />
  <char num='958' name='xi' convertTo='$\\xi$' />
  <char num='959' name='omicron' convertTo='$o$' />
  <char num='960' name='pi' convertTo='$\\pi$' />
  <char num='961' name='rho' convertTo='$\\rho$' />
  <char num='963' name='sigma' convertTo='$\\sigma$' />
  <char num='964' name='tau' convertTo='$\\tau$' />
  <char num='965' name='upsilon' convertTo='$\\upsilon$' />
  <char num='966' name='phi' convertTo='$\\phi$' />

  <char num='967' name='chi' convertTo='$\\chi$' />
  <char num='968' name='psi' convertTo='$\\psi$' />
  <char num='969' name='omega' convertTo='$\\omega$' />
  <char num='962' name='sigmaf' convertTo='$\\varsigma$' />
  <char num='977' name='thetasym' convertTo='$\\vartheta$' />
  <char num='982' name='piv' convertTo='$\\varpi$' />
  <char num='8230' name='hellip' convertTo='\\ldots' />
  <char num='8242' name='prime' convertTo='$\\prime$' />
  <char num='8254' name='oline' convertTo='-' />

  <char num='8260' name='frasl' convertTo='/' />
  <char num='8472' name='weierp' convertTo='$\\wp$' />
  <char num='8465' name='image' convertTo='$\\Im$' />
  <char num='8476' name='real' convertTo='$\\Re$' />
  <char num='8501' name='alefsym' convertTo='$\\aleph$' />
  <char num='8226' name='bull' convertTo='$\\bullet$' />
  <char num='8482' name='trade' convertTo='$^{\\rm TM}$' /> <!-- \texttrademark -->
  <char num='8592' name='larr' convertTo='$\\leftarrow$' />

  <char num='8594' name='rarr' convertTo='$\\rightarrow$' />
  <char num='8593' name='uarr' convertTo='$\\uparrow$' />
  <char num='8595' name='darr' convertTo='$\\downarrow$' />
  <char num='8596' name='harr' convertTo='$\\leftrightarrow$' />
  <char num='8629' name='crarr' convertTo='$\\hookleftarrow$' />
  <char num='8657' name='uArr' convertTo='$\\Uparrow$' />
  <char num='8659' name='dArr' convertTo='$\\Downarrow$' />
  <char num='8656' name='lArr' convertTo='$\\Leftarrow$' />
  <char num='8658' name='rArr' convertTo='$\\Rightarrow$' />

  <char num='8660' name='hArr' convertTo='$\\Leftrightarrow$' />
  <char num='8704' name='forall' convertTo='$\\forall$' />
  <char num='8706' name='part' convertTo='$\\partial$' />
  <char num='8707' name='exist' convertTo='$\\exists$' />
  <char num='8709' name='empty' convertTo='$\\emptyset$' />
  <char num='8711' name='nabla' convertTo='$\\nabla$' />
  <char num='8712' name='isin' convertTo='$\\in$' />
  <char num='8715' name='ni' convertTo='$\\ni$' />
  <char num='8713' name='notin' convertTo='$\\notin$' />

  <char num='8721' name='sum' convertTo='$\\sum$' />
  <char num='8719' name='prod' convertTo='$\\prod$' />
  <char num='8722' name='minus' convertTo='$-$' />
  <char num='8727' name='lowast' convertTo='$\\ast$' />
  <char num='8730' name='radic' convertTo='$\\surd$' />
  <char num='8733' name='prop' convertTo='$\\propto$' />
  <char num='8734' name='infin' convertTo='$\\infty$' />
  <char num='8736' name='ang' convertTo='$\\angle$' />
  <char num='8743' name='and' convertTo='$\\wedge$' />

  <char num='8744' name='or' convertTo='$\\vee$' />
  <char num='8745' name='cup' convertTo='$\\cup$' />
  <char num='8746' name='cap' convertTo='$\\cap$' />
  <char num='8747' name='int' convertTo='$\\int$' />
  <char num='8756' name='there4' convertTo='$\\therefore$' /> <!-- only AMS -->
  <char num='8764' name='sim' convertTo='$\\sim$' />
  <char num='8776' name='asymp' convertTo='$\\approx$' />
  <char num='8773' name='cong' convertTo='$\\cong$' />

  <char num='8800' name='ne' convertTo='$\\neq$' />
  <char num='8801' name='equiv' convertTo='$\\equiv$' />
  <char num='8804' name='le' convertTo='$\\leq$' />
  <char num='8805' name='ge' convertTo='$\\geq$' />
  <char num='8834' name='sub' convertTo='$\\subset$' />
  <char num='8835' name='sup' convertTo='$\\supset$' />
  <char num='8838' name='sube' convertTo='$\\subseteq$' />
  <char num='8839' name='supe' convertTo='$\\supseteq$' />
  <char num='8836' name='nsub' convertTo='$\\nsubset$' /> <!-- only AMS -->

  <char num='8853' name='oplus' convertTo='$\\oplus$' />
  <char num='8855' name='otimes' convertTo='$\\otimes$' />
  <char num='8869' name='perp' convertTo='$\\perp$' />
  <char num='8901' name='sdot' convertTo='$\\cdot$' />
  <char num='8968' name='rceil' convertTo='$\\rceil$' />
  <char num='8969' name='lceil' convertTo='$\\lceil$' />
  <char num='8970' name='lfloor' convertTo='$\\lfloor$' />
  <char num='8971' name='rfloor' convertTo='$\\rfloor$' />
  <char num='9001' name='rang' convertTo='$\\rangle$' />

  <char num='9002' name='lang' convertTo='$\\langle$' />
  <char num='9674' name='loz' convertTo='$\\lozenge$' /> <!-- only AMS -->
  <char num='9824' name='spades' convertTo='$\\spadesuit$' />
  <char num='9827' name='clubs' convertTo='$\\clubsuit$' />
  <char num='9829' name='hearts' convertTo='$\\heartsuit$' />
  <char num='9830' name='diams' convertTo='$\\diamondsuit$' />                                     
  <char num='38' name='amp' convertTo='\\@AMP' />    
  <char num='34' name='quot' convertTo='@DOUBLEQUOT' />
  <char num='169' name='copy' convertTo='\\copyright' />

  <char num='60' name='lt' convertTo='$@LT$' />
  <char num='62' name='gt' convertTo='$@GT$' />
  <char num='338' name='OElig' convertTo='\\OE' />
  <char num='339' name='oelig' convertTo='\\oe' />
  <char num='352' name='Scaron' convertTo='\\v{S}' />
  <char num='353' name='scaron' convertTo='\\v{s}' />
  <char num='376' name='Yuml' convertTo='\\\"Y' />
  <char num='710' name='circ' convertTo='\\textasciicircum' />
  <char num='732' name='tilde' convertTo='\\textasciitilde' />

  <char num='8211' name='ndash' convertTo='--' />
  <char num='8212' name='mdash' convertTo='---' />
  <char num='8216' name='lsquo' convertTo='`' />
  <char num='8217' name='rsquo' convertTo='@QUOT' />
  <char num='8220' name='ldquo' convertTo='``' />
  <char num='8221' name='rdquo' convertTo='@QUOT@QUOT' />
  <char num='8224' name='dagger' convertTo='\\dag' />
  <char num='8225' name='Dagger' convertTo='\\ddag' />
  <char num='8240' name='permil' convertTo='\\permil' /> <!-- wasysym package -->

  <char num='8364' name='euro' convertTo='\\euro' /> <!-- eurosym package -->
  <char num='8249' name='lsaquo' convertTo='\\guilsinglleft' />
  <char num='8250' name='rsaquo' convertTo='\\guilsinglright' />
<!--	  <char num='160' name='nbsp' convertTo='\\nolinebreak' />-->
  <char num='160' name='nbsp' convertTo='~' />
  <char num='161' name='iexcl' convertTo='\\textexclamdown' />
  <char num='163' name='pound' convertTo='\\pounds' />
  <char num='164' name='curren' convertTo='\\currency' /> <!-- wasysym package -->
  <char num='165' name='yen' convertTo='\\textyen' /> <!-- textcomp -->

  <char num='166' name='brvbar' convertTo='\\brokenvert' /> <!-- wasysym -->
  <char num='167' name='sect' convertTo='\\S' />
  <char num='171' name='laquo' convertTo='\\guillemotleft' />
  <char num='187' name='raquo' convertTo='\\guillemotright' />
  <char num='174' name='reg' convertTo='\\textregistered' />
  <char num='170' name='ordf' convertTo='\\textordfeminine' />
  <char num='172' name='not' convertTo='$\\neg$' />
  <char num='176' name='deg' convertTo='$\\degree$' /> <!-- mathabx -->

  <char num='177' name='plusmn' convertTo='$\\pm$' />
  <char num='180' name='acute' convertTo='@QUOT' />
  <char num='181' name='micro' convertTo='$\\mu$' />
  <char num='182' name='para' convertTo='\\P' />
  <char num='183' name='middot' convertTo='$\\cdot$' />
  <char num='186' name='ordm' convertTo='\\textordmasculine' />
  <char num='162' name='cent' convertTo='\\cent' /> <!-- wasysym -->
  <char num='185' name='sup1' convertTo='$^1$' />

  <char num='178' name='sup2' convertTo='$^2$' />
  <char num='179' name='sup3' convertTo='$^3$' />
  <char num='189' name='frac12' convertTo='$\\frac{1}{2}$' />
  <char num='188' name='frac14' convertTo='$\\frac{1}{4}$' />
  <char num='190' name='frac34' convertTo='$\\frac{3}{4}' />
  <char num='192' name='Agrave' convertTo='\\`A' />
  <char num='193' name='Aacute' convertTo='\\@QUOTA' />
  <char num='194' name='Acirc' convertTo='\\^A' />
  <char num='195' name='Atilde' convertTo='\\~A' />

  <char num='196' name='Auml' convertTo='\\@DOUBLEQUOTA' />
  <char num='197' name='Aring' convertTo='\\AA' />
  <char num='198' name='AElig' convertTo='\\AE' />
  <char num='199' name='Ccedil' convertTo='\\cC' />
  <char num='200' name='Egrave' convertTo='\\`E' />
  <char num='201' name='Eacute' convertTo='\\@QUOTE' />
  <char num='202' name='Ecirc' convertTo='\\^E' />
  <char num='203' name='Euml' convertTo='\\@DOUBLEQUOTE' />
  <char num='204' name='Igrave' convertTo='\\`I' />
  <char num='205' name='Iacute' convertTo='\\@QUOTI' />
  <char num='206' name='Icirc' convertTo='\\^I' />
  <char num='207' name='Iuml' convertTo='\\\"I' />
  <char num='208' name='ETH' convertTo='$\\eth$' /> <!-- AMS -->
  <char num='209' name='Ntilde' convertTo='\\~N' />    
  <char num='210' name='Ograve' convertTo='\\`O' />
  <char num='211' name='Oacute' convertTo='\\@QUOTO' />
  <char num='212' name='Ocirc' convertTo='\\^O' />
  <char num='213' name='Otilde' convertTo='\\~O' />
  <char num='214' name='Ouml' convertTo='\\@DOUBLEQUOTO' />
  <char num='215' name='times' convertTo='$\\times$' />
  <char num='216' name='Oslash' convertTo='\\O' />
  <char num='217' name='Ugrave' convertTo='\\`U' />
  <char num='218' name='Uacute' convertTo='\\@QUOTU' />
  <char num='219' name='Ucirc' convertTo='\\^U' />
  <char num='220' name='Uuml' convertTo='\\@DOUBLEQUOTU' />
  <char num='221' name='Yacute' convertTo='\\@QUOTY' />
  <char num='222' name='THORN' convertTo='\\Thorn' />    <!-- wasysym -->
  <char num='223' name='szlig' convertTo='\\ss' />
  <char num='224' name='agrave' convertTo='\\`a' />
  <char num='225' name='aacute' convertTo='\\@QUOTa' />
  <char num='226' name='acirc' convertTo='\\^a' />
  <char num='227' name='atilde' convertTo='\\~a' />
  <char num='228' name='auml' convertTo='\\@DOUBLEQUOTa' />
  <char num='229' name='aring' convertTo='\\aa' />
  <char num='230' name='aelig' convertTo='\\ae' />
  <char num='231' name='ccedil' convertTo='\\cc' />
  <char num='232' name='egrave' convertTo='\\`e' />
  <char num='233' name='eacute' convertTo='\\@QUOTe' />
  <char num='234' name='ecirc' convertTo='\\^e' />
  <char num='235' name='euml' convertTo='\\@DOUBLEQUOTe' />    
  <char num='236' name='igrave' convertTo='\\`i' />
  <char num='237' name='iacute' convertTo='\\@QUOTi' />
  <char num='238' name='icirc' convertTo='\\^i' />
  <char num='239' name='iuml' convertTo='\\@DOUBLEQUOTi' />
  <char num='240' name='eth' convertTo='$\\eth$' /> <!-- -->
  <char num='241' name='ntilde' convertTo='\\~n' />
  <char num='242' name='ograve' convertTo='\\`o' />
  <char num='243' name='oacute' convertTo='\\@QUOTo' />
  <char num='244' name='ocirc' convertTo='\\^o' />
  <char num='245' name='otilde' convertTo='\\~o' />
  <char num='246' name='ouml' convertTo='\\@DOUBLEQUOTo' />
  <char num='247' name='divide' convertTo='$\\divide$' />       
  <char num='248' name='oslash' convertTo='\\o' /> 
  <char num='249' name='ugrave' convertTo='\\`u' />
  <char num='250' name='uacute' convertTo='\\@QUOTu' />
  <char num='251' name='ucirc' convertTo='\\^u' />
  <char num='252' name='uuml' convertTo='\\@DOUBLEQUOTu' />
  <char num='253' name='yacute' convertTo='\\@QUOTy' />
  <char num='254' name='thorn' convertTo='\\thorn' /> <!-- wasysym -->
  <char num='255' name='yuml' convertTo='\\@DOUBLEQUOTy' />                  
</chars>"

Instance Method Summary collapse

Instance Method Details

#array_to_latex(array, join_char = '') ⇒ Object



351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
# File 'lib/maruku/output/to_latex.rb', line 351

def array_to_latex(array, join_char='')
	e = []
	array.each do |c|
		method = c.kind_of?(MDElement) ? 
		   "to_latex_#{c.node_type}" : "to_latex"
		
		if not c.respond_to?(method)
	#		raise "Object does not answer to #{method}: #{c.class} #{c.inspect[0,100]}"
			next
		end
		
		h =  c.send(method)
		
		if h.nil?
			raise "Nil html for #{c.inspect} created with method #{method}"
		end
		
		if h.kind_of?Array
			e = e + h
		else
			e << h
		end
	end
	e.join(join_char)
end

#children_to_latexObject

Convert each child to html



347
348
349
# File 'lib/maruku/output/to_latex.rb', line 347

def children_to_latex
	array_to_latex(@children)
end

#get_setting(name, default = nil) ⇒ Object



81
82
83
# File 'lib/maruku/output/to_latex.rb', line 81

def get_setting(name, default=nil)
	self.attributes[name] || @doc.attributes[name] || default
end

#latex_color(s, command = 'color') ⇒ Object

colorname colorMaRuKu::Out::Latex.1,01,0.2,01,0.2,0.3



87
88
89
90
91
92
93
94
95
96
97
98
99
# File 'lib/maruku/output/to_latex.rb', line 87

def latex_color(s, command='color')
	if s =~ /^\#(\w\w)(\w\w)(\w\w)$/
		r = $1.hex; g = $2.hex; b=$3.hex				
		# convert from 0-255 to 0.0-1.0
		r = r / 255.0 
		g = g / 255.0 
		b = b / 255.0 
		
		"\\#{command}[rgb]{%0.2f,%0.2f,%0.2f}" % [r,g,b]
	else
		"\\#{command}{#{s}}"
	end
end

#latex_escape(source) ⇒ Object

the ultimate escaping (is much better than using verb)



188
189
190
191
192
# File 'lib/maruku/output/to_latex.rb', line 188

def latex_escape(source)
	s=""; 
	source.each_byte do |b| s+= "\\char%d" % b end
	s
end

#to_latex_abbrObject



328
329
330
# File 'lib/maruku/output/to_latex.rb', line 328

def to_latex_abbr
	children_to_latex
end

#to_latex_cellObject



286
# File 'lib/maruku/output/to_latex.rb', line 286

def to_latex_cell; children_to_latex end

#to_latex_codeObject



101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
# File 'lib/maruku/output/to_latex.rb', line 101

def to_latex_code;
	raw_code = self.raw_code
	
	if @doc.attributes[:latex_use_listings]
		s = "\\lstset{columns=fixed,frame=shadowbox}"

		show_spaces = get_setting(:code_show_spaces) 
		if show_spaces
			s+= "\\lstset{showspaces=true,showtabs=true}\n"
		else
			s+= "\\lstset{showspaces=false,showtabs=false}\n"
		end
		
		color = latex_color get_setting(:code_background_color,DEFAULT_CODE_COLOR)
		
		s+= "\\lstset{backgroundcolor=#{color}}\n" 
		
		s+= "\\lstset{basicstyle=\\ttfamily\\footnotesize}\n" 
		
		
		lang = self.attributes[:lang] || @doc.attributes[:code_lang] || '{}'
		if lang
			s += "\\lstset{language=#{lang}}\n"
		end
		
		"#{s}\n\\begin{lstlisting}\n#{raw_code}\n\\end{lstlisting}"
	else
		"\\begin{verbatim}#{raw_code}\\end{verbatim}\n"
	end
end

#to_latex_definitionObject



311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
# File 'lib/maruku/output/to_latex.rb', line 311

def to_latex_definition		
	terms = self.terms
	definitions = self.definitions
	
	s = ""
	terms.each do |t|
		s +="\n\\item[#{t.children_to_latex}] "
	end

	definitions.each do |d|
		s += "#{d.children_to_latex} \n"
	end
	
	s
end

#to_latex_definition_listObject

Definition lists ###



304
305
306
307
308
309
# File 'lib/maruku/output/to_latex.rb', line 304

def to_latex_definition_list
	s = "\\begin{description}\n"
	s += children_to_latex
	s += "\\end{description}\n"
	s
end

#to_latex_email_addressObject



245
246
247
248
# File 'lib/maruku/output/to_latex.rb', line 245

def to_latex_email_address
	email = self.email
	"\\href{mailto:#{email}}{#{latex_escape(email)}}"
end

#to_latex_emphasisObject



174
# File 'lib/maruku/output/to_latex.rb', line 174

def to_latex_emphasis;  wrap_as_span('\em')               end

#to_latex_entityObject



28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/maruku/output/to_latex_entities.rb', line 28

def to_latex_entity 
	entity_name = self.entity_name
	
	MDElement.init_tables
	
	replace = @@entity_to_latex[entity_name]
		if replace
#			puts "#{entity_name} -> #{replace.inspect}"
		return replace
	else
		$stderr.puts "Cannot translate #{entity_name}"
		return entity_name
	end
end

#to_latex_footnote_referenceObject



289
290
291
292
293
294
295
296
297
# File 'lib/maruku/output/to_latex.rb', line 289

def to_latex_footnote_reference
	id = self.footnote_id
	f = @doc.footnotes[id]
	if f
		"\\footnote{#{f.children_to_latex.strip}} "
	else
		$stderr.puts "Could not find footnote '#{fid}'"
	end
end

#to_latex_head_cellObject



285
# File 'lib/maruku/output/to_latex.rb', line 285

def to_latex_head_cell; children_to_latex end

#to_latex_headerObject



138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
# File 'lib/maruku/output/to_latex.rb', line 138

def to_latex_header
	h = TexHeaders[self.level] || 'paragraph'
	
	title = children_to_latex
	if number = section_number
		title = number + title
	end
	
	if id = self.attributes[:id]
		# drop '#' at the beginning
		if id[0,1] == '#' then id = [1,id.size] end
		%{\\hypertarget{%s}{}\\%s*{{%s}}\\label{%s}\n\n} % [ id, h, title, id ]
	else
		%{\\%s*{%s}\n\n} % [ h, title]
	end
end

#to_latex_hruleObject



74
# File 'lib/maruku/output/to_latex.rb', line 74

def to_latex_hrule; "\n\\vspace{.5em} \\hrule \\vspace{.5em}\n" end

#to_latex_imageObject



332
333
334
335
336
337
338
339
340
341
342
343
# File 'lib/maruku/output/to_latex.rb', line 332

def to_latex_image
	id = self.ref_id
	ref = @doc.refs[id]
	if not ref
		$stderr.puts "Could not find id = '#{id}'"
		""
	else
		url = ref[:url]
		"{\\bf Images not supported yet (#{latex_escape(url)})}"
	end

end


206
207
208
209
# File 'lib/maruku/output/to_latex.rb', line 206

def to_latex_immediate_link
	url = self.url
	return "\\href{#{url}}{#{url.to_latex}}"
end

#to_latex_inline_codeObject



194
195
196
197
198
199
200
201
202
203
204
# File 'lib/maruku/output/to_latex.rb', line 194

def to_latex_inline_code; 
	source = self.raw_code
	
	# Convert to printable latex chars 
	s = latex_escape(source)
	
	color = get_setting(:code_background_color,DEFAULT_CODE_COLOR)
	colorspec = latex_color(color, 'colorbox')

	"#{colorspec}{\\tt #{s}}"
end

#to_latex_liObject



166
167
168
# File 'lib/maruku/output/to_latex.rb', line 166

def to_latex_li;        
	"\\item #{children_to_latex}\n"  
end

#to_latex_li_spanObject



169
170
171
# File 'lib/maruku/output/to_latex.rb', line 169

def to_latex_li_span;
	"\\item #{children_to_latex}\n"
end

#to_latex_linebreakObject



75
# File 'lib/maruku/output/to_latex.rb', line 75

def to_latex_linebreak; "\\linebreak " end


211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
# File 'lib/maruku/output/to_latex.rb', line 211

def to_latex_link
	if id = self.ref_id
		# if empty, use text
		if id.size == 0
			id = children.to_s.downcase
		end
		
		ref = @doc.refs[id]
		if not ref
			$stderr.puts "Could not find id = '#{id}'"
			return children_to_latex
		else
			url = ref[:url]
			#title = ref[:title] || 'no title'

			if url[0,1] == '#'
				url = url[1,url.size]
				return "\\hyperlink{#{url}}{#{children_to_latex}}"
			else
				return "\\href{#{url}}{#{children_to_latex}}"
			end
		end
	else
		url = self.url

		if url[0,1] == '#'
			url = url[1,url.size]
			return "\\hyperlink{#{url}}{#{children_to_latex}}"
		else
			return "\\href{#{url}}{#{children_to_latex}}"
		end
	end
end

#to_latex_olObject



165
# File 'lib/maruku/output/to_latex.rb', line 165

def to_latex_ol;        wrap_as_environment('enumerate')               end

#to_latex_paragraphObject



77
78
79
# File 'lib/maruku/output/to_latex.rb', line 77

def to_latex_paragraph; 
	children_to_latex+"\n\n"
end

#to_latex_quoteObject



164
# File 'lib/maruku/output/to_latex.rb', line 164

def to_latex_quote;        wrap_as_environment('quote')               end

#to_latex_raw_htmlObject



299
300
301
# File 'lib/maruku/output/to_latex.rb', line 299

def to_latex_raw_html
	'{\bf Raw HTML removed in latex version }'
end

#to_latex_strongObject



173
# File 'lib/maruku/output/to_latex.rb', line 173

def to_latex_strong;    wrap_as_span('\bf')           end

#to_latex_tableObject



251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
# File 'lib/maruku/output/to_latex.rb', line 251

def to_latex_table
	align = self.align
	num_columns = align.size

	head = @children.slice(0, num_columns)
	rows = []
	i = num_columns
	while i<@children.size
		rows << @children.slice(i, num_columns)
		i+=num_columns
	end
	
	h = {:center=>'c',:left=>'l',:right=>'r'}
	align_string = align.map{|a| h[a]}.join('|')
	
	s = "\\begin{tabular}{#{align_string}}\n"
		
		s += array_to_latex(head, '&') + "\\\\" +"\n"
		
		s += "\\hline \n"
		
		rows.each do |row|
			s += array_to_latex(row, '&') + "\\\\" +"\n"
		end
		
	s += "\\end{tabular}"
	
	# puts table in its own paragraph
	s += "\n\n"
	
	s
end

#to_latex_ulObject



156
157
158
159
160
161
162
# File 'lib/maruku/output/to_latex.rb', line 156

def to_latex_ul;       
	if self.attributes[:toc]
		@doc.toc.to_latex
	else
		wrap_as_environment('itemize')
	end
end

#wrap_as_environment(name) ⇒ Object



180
181
182
183
184
# File 'lib/maruku/output/to_latex.rb', line 180

def wrap_as_environment(name)
"\\begin{#{name}}%
#{children_to_latex}
\\end{#{name}}\n"	
end

#wrap_as_span(c) ⇒ Object



176
177
178
# File 'lib/maruku/output/to_latex.rb', line 176

def wrap_as_span(c)
	"{#{c} #{children_to_latex}}"
end