polytexnic 0.6.5 → 0.6.6
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 +4 -4
- data/.pull_requests/1385061501 +0 -0
- data/lib/polytexnic/preprocessors/polytex.rb +25 -7
- data/lib/polytexnic/version.rb +1 -1
- data/spec/markdown_to_polytex_spec.rb +38 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 03e62fa6b490d41676bdfa9726742aea94016aff
|
4
|
+
data.tar.gz: afbdc88da5dd5971e08d4e117254bca05908e2fb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 58b473266813ba1e121f9bf9691d5d49236ac834e2e3de7a2880078e5e0830d9131b22fd9b041670a9a4a43694909edb255f8acdbb20f8f0171183461dfa24e6
|
7
|
+
data.tar.gz: 8c9f0555371af7f274dfa301b23e037a1d10b27303a0c506186112761524a37cc3c8e03ed2a3c1cb716e2d32fa9964f4ff6af0574846a7cc5d3cdc4b9f41d38a
|
File without changes
|
@@ -39,8 +39,12 @@ module Polytexnic
|
|
39
39
|
# Override the header ordering, which starts with 'section' by default.
|
40
40
|
lh = 'chapter,section,subsection,subsubsection,paragraph,subparagraph'
|
41
41
|
kramdown = Kramdown::Document.new(cleaned_markdown, latex_headers: lh)
|
42
|
-
@source =
|
43
|
-
|
42
|
+
@source = kramdown.to_latex.tap do |polytex|
|
43
|
+
convert_tt(polytex)
|
44
|
+
restore_math(polytex, math_cache)
|
45
|
+
restore_inclusion(polytex)
|
46
|
+
restore_raw_latex(polytex, cache)
|
47
|
+
end
|
44
48
|
end
|
45
49
|
|
46
50
|
# Adds support for <<(path/to/code) inclusion.
|
@@ -49,7 +53,7 @@ module Polytexnic
|
|
49
53
|
text.gsub!(/^\s*<<(\(.*?\))/) { "<!-- inclusion= <<#{$1}-->" }
|
50
54
|
end
|
51
55
|
def restore_inclusion(text)
|
52
|
-
text.gsub(/% <!-- inclusion= (.*?)-->/) { "%= #{$1}" }
|
56
|
+
text.gsub!(/% <!-- inclusion= (.*?)-->/) { "%= #{$1}" }
|
53
57
|
end
|
54
58
|
|
55
59
|
# Caches literal LaTeX environments.
|
@@ -84,9 +88,16 @@ module Polytexnic
|
|
84
88
|
)
|
85
89
|
/x
|
86
90
|
markdown.gsub!(command_regex) do
|
87
|
-
|
88
|
-
|
89
|
-
key
|
91
|
+
content = $1
|
92
|
+
key = digest(content)
|
93
|
+
cache[key] = content
|
94
|
+
|
95
|
+
if content =~ /\{table\}|\\caption\{/
|
96
|
+
# Pad tables & captions with newlines for kramdown compatibility.
|
97
|
+
"\n#{key}\n"
|
98
|
+
else
|
99
|
+
key
|
100
|
+
end
|
90
101
|
end
|
91
102
|
end
|
92
103
|
|
@@ -140,6 +151,14 @@ module Polytexnic
|
|
140
151
|
output.join("\n")
|
141
152
|
end
|
142
153
|
|
154
|
+
# Converts {tt ...} to \kode{...}
|
155
|
+
# This effectively converts `inline code`, which kramdown sets as
|
156
|
+
# {\tt inline code}, to PolyTeX's native \kode command, which in
|
157
|
+
# turns allows inline code to be separately styled.
|
158
|
+
def convert_tt(text)
|
159
|
+
text.gsub!(/\{\\tt (.*?)\}/, '\kode{\1}')
|
160
|
+
end
|
161
|
+
|
143
162
|
# Caches math.
|
144
163
|
# Leanpub uses the notation {$$}...{/$$} for both inline and block math,
|
145
164
|
# with the only difference being the presences of newlines:
|
@@ -178,7 +197,6 @@ module Polytexnic
|
|
178
197
|
end
|
179
198
|
text.gsub!(key, open + value + close)
|
180
199
|
end
|
181
|
-
text
|
182
200
|
end
|
183
201
|
end
|
184
202
|
end
|
data/lib/polytexnic/version.rb
CHANGED
@@ -59,8 +59,40 @@ x^2
|
|
59
59
|
|
60
60
|
it { should resemble '\[ x^2 \]' }
|
61
61
|
end
|
62
|
+
|
63
|
+
describe "tables" do
|
64
|
+
let(:markdown) do <<-'EOS'
|
65
|
+
\begin{table}
|
66
|
+
|
67
|
+
|**option**|**size**|**actual size**|
|
68
|
+
| k | kilobytes | (1024 bytes) |
|
69
|
+
| M | megabytes | (1024 kilobytes) |
|
70
|
+
| G | gigabytes | (1024 megabytes) |
|
71
|
+
| T | terabytes | (1024 gigabytes) |
|
72
|
+
| P | petabytes | (1024 terabytes) |
|
73
|
+
\end{table}
|
74
|
+
|
75
|
+
\begin{table}
|
76
|
+
|
77
|
+
|**option**|**size**|**actual size**|
|
78
|
+
| k | kilobytes | (1024 bytes) |
|
79
|
+
| M | megabytes | (1024 kilobytes) |
|
80
|
+
| G | gigabytes | (1024 megabytes) |
|
81
|
+
| T | terabytes | (1024 gigabytes) |
|
82
|
+
| P | petabytes | (1024 terabytes) |
|
83
|
+
\caption{A caption.}
|
84
|
+
\end{table}
|
85
|
+
|
86
|
+
EOS
|
87
|
+
end
|
88
|
+
it { should include '\begin{table}' }
|
89
|
+
it { should include '\begin{longtable}' }
|
90
|
+
it { should_not include '\textbar' }
|
91
|
+
end
|
62
92
|
end
|
63
93
|
|
94
|
+
|
95
|
+
|
64
96
|
describe "footnotes" do
|
65
97
|
subject do
|
66
98
|
Polytexnic::Pipeline.new(markdown, source: :markdown).polytex
|
@@ -198,6 +230,12 @@ def foo; "bar"; end
|
|
198
230
|
end
|
199
231
|
|
200
232
|
describe "source code" do
|
233
|
+
|
234
|
+
context "inline" do
|
235
|
+
let(:source) { '`foo bar`' }
|
236
|
+
it { should include '\kode{foo bar}' }
|
237
|
+
end
|
238
|
+
|
201
239
|
context "without highlighting" do
|
202
240
|
let(:source) do <<-EOS
|
203
241
|
def foo
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: polytexnic
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Hartl
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-11-
|
12
|
+
date: 2013-11-21 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: nokogiri
|
@@ -167,6 +167,7 @@ files:
|
|
167
167
|
- .pull_requests/1384446851
|
168
168
|
- .pull_requests/1384800466
|
169
169
|
- .pull_requests/1384811507
|
170
|
+
- .pull_requests/1385061501
|
170
171
|
- .rspec
|
171
172
|
- .ruby-gemset
|
172
173
|
- .ruby-version
|