md2tex 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (4) hide show
  1. checksums.yaml +7 -0
  2. data/bin/md2tex +7 -0
  3. data/lib/md2tex.rb +135 -0
  4. metadata +88 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 715efee631cf83c30bdc74621cf434dd93e3ceee
4
+ data.tar.gz: 43531a82b7d775b5c23feaf77cf84e84965d2783
5
+ SHA512:
6
+ metadata.gz: 9752aad310aee2a3cef91507c399fe30e9080c7b49c0c6834bc9a59d6e4cebecea0d956c339fc93b6169947c6e2e8f8bbf7a5b633b13693bc41eecd0434bd519
7
+ data.tar.gz: c6d6fe47dd2f13b3901f8ea315e3657b4d428e18729774ba3c6642be38361e1e70126a6aaffba24d8117e66e9cbaa62bf16cb0190a2a14c66ad8722f3532308a
data/bin/md2tex ADDED
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env ruby
2
+ # encoding: utf-8
3
+ require 'md2tex'
4
+
5
+ ARGV.each do |filename|
6
+ Md2Tex.process filename, section_numbers: false
7
+ end
data/lib/md2tex.rb ADDED
@@ -0,0 +1,135 @@
1
+ require 'rubygems'
2
+ require 'redcarpet'
3
+
4
+ class Md2Tex < Redcarpet::Render::Base
5
+ def initialize options = {}
6
+ @sectionsuffix = options[:section_numbers] ? '' : '*'
7
+ super()
8
+ end
9
+
10
+ def header h, level
11
+ case level
12
+ when 1 then p "\\section#{@sectionsuffix}{#{h}}\n\n"
13
+ when 2 then "\\subsection#{@sectionsuffix}{#{h}}\n\n"
14
+ when 3 then "\\subsubsection#{@sectionsuffix}{#{h}}\n\n"
15
+ else h
16
+ end
17
+ end
18
+
19
+ def paragraph text
20
+ "#{text}\n\n"
21
+ end
22
+
23
+ def list contents, list_type
24
+ t = list_type == :ordered ? 'enumerate' : 'itemize'
25
+ "\\begin{#{t}}\n#{contents}\\end{#{t}}\n\n"
26
+ end
27
+
28
+ def list_item text, list_type
29
+ "\\item #{text}\n"
30
+ end
31
+
32
+ def block_quote text
33
+ "\\begin{quote}\n#{text}\\end{quote}\n\n"
34
+ end
35
+
36
+ def hrule
37
+ "\\centerline{—}\n\n"
38
+ end
39
+
40
+ def linebreak
41
+ "\\\\\n"
42
+ end
43
+
44
+ def emphasis text
45
+ "\\textit{#{text}}"
46
+ end
47
+
48
+ def double_emphasis text
49
+ "\\textbf{#{text}}"
50
+ end
51
+
52
+ def triple_emphasis text
53
+ "\\textbf{\\textit{#{text}}}"
54
+ end
55
+
56
+ def codespan code
57
+ "\\texttt{#{code}}"
58
+ end
59
+
60
+ def block_code code, lang
61
+ "\\begin{verbatim}\n#{code}\\end{verbatim}\n\n"
62
+ end
63
+
64
+ def doc_header
65
+ @@templates[:header]
66
+ end
67
+
68
+ def doc_footer
69
+ @@templates[:footer]
70
+ end
71
+
72
+ def self.load_templates
73
+ @@templates = {}
74
+
75
+ begin
76
+ io = File.read(__FILE__).force_encoding(Encoding::UTF_8)
77
+ app, data = io.gsub("\r\n", "\n").split(/^__END__$/, 2)
78
+ rescue Errno::ENOENT
79
+ app, data = nil
80
+ end
81
+
82
+ if data
83
+ template = nil
84
+ data.each_line do |line|
85
+ if line =~ /^@@\s*(.*\S)\s*$/
86
+ template = ''
87
+ @@templates[$1.to_sym] = template
88
+ elsif template
89
+ template << line
90
+ end
91
+ end
92
+ end
93
+ end
94
+
95
+ load_templates
96
+
97
+ def self.process filename, options = {}
98
+ content = File.read(filename).force_encoding(Encoding::UTF_8)
99
+ md = Redcarpet::Markdown.new(Md2Tex.new(options), fenced_code_blocks: true)
100
+ tex = md.render(content)
101
+ texfile = "#{File.basename(filename, '.md')}.tex"
102
+ Dir.chdir File.dirname(filename) do
103
+ File.write(texfile, tex)
104
+ system 'xelatex', texfile
105
+ end
106
+ end
107
+ end
108
+
109
+ __END__
110
+
111
+ @@header
112
+ \documentclass[oneside, 11pt, parskip=half, DIV=9]{scrartcl}
113
+ \usepackage[fleqn]{amsmath}
114
+ \usepackage{mathspec}
115
+ \usepackage{xltxtra}
116
+ \usepackage{polyglossia}
117
+ \usepackage{microtype}
118
+ \usepackage{tikz}
119
+ \usepackage{ragged2e}
120
+
121
+ \setdefaultlanguage{german}
122
+ \setromanfont{Fira Sans}
123
+ \setsansfont{Fira Sans}
124
+ \setmathfont(Digits,Latin){Fira Sans}
125
+ \setmonofont{Fira Mono}
126
+
127
+ \sloppy
128
+
129
+ \addtokomafont{disposition}{\rmfamily}
130
+
131
+ \begin{document}
132
+
133
+ @@footer
134
+
135
+ \end{document}
metadata ADDED
@@ -0,0 +1,88 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: md2tex
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Kext
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-04-18 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: redcarpet
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '3.3'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '3.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rouge
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.10'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.10'
41
+ - !ruby/object:Gem::Dependency
42
+ name: sass
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.4'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.4'
55
+ description: Convert Markdown files to TeX.
56
+ email: "-"
57
+ executables:
58
+ - md2tex
59
+ extensions: []
60
+ extra_rdoc_files: []
61
+ files:
62
+ - bin/md2tex
63
+ - lib/md2tex.rb
64
+ homepage: http://rubygems.org/gems/md2tex
65
+ licenses:
66
+ - MIT
67
+ metadata: {}
68
+ post_install_message:
69
+ rdoc_options: []
70
+ require_paths:
71
+ - lib
72
+ required_ruby_version: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ required_rubygems_version: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
82
+ requirements: []
83
+ rubyforge_project:
84
+ rubygems_version: 2.5.1
85
+ signing_key:
86
+ specification_version: 4
87
+ summary: Md2TeX - A Markdown to TeX Converter
88
+ test_files: []