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.
- checksums.yaml +7 -0
- data/bin/md2tex +7 -0
- data/lib/md2tex.rb +135 -0
- 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
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: []
|