C:\xampp\php\pear\Text\Wiki\Render\Latex.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
<?php

/**

* Formats parsed Text_Wiki for LaTeX rendering.

* $Id: Latex.php 169211 2004-09-25 19:05:14Z pmjones $

* @author Jeremy Cowgar <jeremy@cowgar.com>

* @package Text_Wiki

* @todo [http://google.com] becomes 1 with a LaTeX footnote in subscript.
*       This should be a normal LaTeX footnote associated with the
*       previous word?

* @todo parse "..." to be ``...''

* @todo parse '...' to be `...'

* @todo move escape_latex to a static function, move escaping to the
*       individual .php files they are associated with

* @todo allow the user to add conf items to do things like
*       + A custom document header
*       + Custom page headings
*       + Include packages
*       + Set Title, Author, Date
*       + Include a title page
*       + Not output Document Head/Foot (maybe combinding many pages?)

*/

class Text_Wiki_Render_Latex extends Text_Wiki_Render {
    function 
escape_latex ($txt) {
        
$txt str_replace("\\""\\\\"$txt);
        
$txt str_replace('#''\#'$txt);
        
$txt str_replace('$''\$'$txt);
        
$txt str_replace('%''\%'$txt);
        
$txt str_replace('^''\^'$txt);
        
$txt str_replace('&''\&'$txt);
        
$txt str_replace('_''\_'$txt);
        
$txt str_replace('{''\{'$txt);
        
$txt str_replace('}''\}'$txt);
        
        
// Typeset things a bit prettier than normas
        
$txt str_replace('~',   '$\sim$'$txt);
        
$txt str_replace('...''\ldots'$txt);

        return 
$txt;
    }

    function 
escape($tok$ele) {
        if (isset(
$tok[$ele])) {
            
$tok[$ele] = $this->escape_latex($tok[$ele]);
        }

        return 
$tok;
    }
    
    function 
pre()
    {
        foreach (
$this->wiki->tokens as $k => $tok) {
            if (
$tok[0] == 'Code') {
                continue;
            }

            
$tok[1] = $this->escape($tok[1], 'text');
            
$tok[1] = $this->escape($tok[1], 'page');
            
$tok[1] = $this->escape($tok[1], 'href');
            
            
$this->wiki->tokens[$k] = $tok;
        }

        
$this->wiki->source $this->escape_latex($this->wiki->source);

        return
            
"\\documentclass{article}\n".
            
"\\usepackage{ulem}\n".
            
"\\pagestyle{headings}\n".
            
"\\begin{document}\n";
    }
    
    function 
post()
    {
        return 
"\\end{document}\n";
    }
    
}
?>
x

Windows NT KPTV 6.2 build 9200 (Windows Server 2012 Datacenter Edition) i586