softcover 0.5.0 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/softcover/cli.rb +3 -3
- data/lib/softcover/commands/generator.rb +1 -1
- data/lib/softcover/commands/server.rb +9 -2
- data/lib/softcover/template/chapters/a_chapter.md +30 -5
- data/lib/softcover/template/chapters/a_chapter.tex +8 -10
- data/lib/softcover/version.rb +1 -1
- data/spec/cli_spec.rb +4 -4
- data/spec/commands/generator_spec.rb +7 -4
- data/spec/webmock_helpers.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5cafb54a38347e1a39e36d6d4bcca3aa533d7eb2
|
4
|
+
data.tar.gz: b1b6d089e5c1cdf27bdd8c7617d32261c37b5e33
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4e8a8c0f01b38a3cd2d9278b54c75c4456f969739ce72fd348d767a95b3fa603df147c247d4882ff716811fdb63673062fdec566a8b9e7008a3670659f0b8589
|
7
|
+
data.tar.gz: 019ce8093c7f097e387a428944636b1877178cf69240779bfa077b2f2064e12f06c4b09272f61fc7a36b9a2173940d1be24097be64f94e22a8e083bd2a267d39
|
data/lib/softcover/cli.rb
CHANGED
@@ -163,11 +163,11 @@ module Softcover
|
|
163
163
|
# ===============================================
|
164
164
|
|
165
165
|
desc "new <name>", "Generate new book directory structure."
|
166
|
-
method_option :
|
166
|
+
method_option :polytex,
|
167
167
|
:type => :boolean,
|
168
168
|
:default => false,
|
169
|
-
:aliases => "-
|
170
|
-
:desc => "Generate a
|
169
|
+
:aliases => "-p",
|
170
|
+
:desc => "Generate a PolyTeX book."
|
171
171
|
method_option :simple,
|
172
172
|
:type => :boolean,
|
173
173
|
:default => false,
|
@@ -12,7 +12,9 @@ module Softcover::Commands::Server
|
|
12
12
|
server_pid = Process.pid
|
13
13
|
directories = ['.', 'chapters']
|
14
14
|
@listener = Listen.to(*directories)
|
15
|
-
|
15
|
+
file_pattern = markdown? ? '\.md' : '\.tex'
|
16
|
+
@listener.filter(/(#{file_pattern}|custom\.sty)$/)
|
17
|
+
|
16
18
|
@listener.change do |modified|
|
17
19
|
rebuild modified.try(:first)
|
18
20
|
Process.kill("HUP", server_pid)
|
@@ -20,11 +22,16 @@ module Softcover::Commands::Server
|
|
20
22
|
@listener.start
|
21
23
|
end
|
22
24
|
|
25
|
+
def markdown?
|
26
|
+
!Dir.glob(path('chapters/*.md')).empty?
|
27
|
+
end
|
28
|
+
|
23
29
|
def rebuild(modified=nil)
|
24
30
|
printf modified ? "=> #{File.basename modified} changed, rebuilding... " :
|
25
31
|
'Building...'
|
26
32
|
t = Time.now
|
27
|
-
Softcover::Builders::Html.new
|
33
|
+
builder = Softcover::Builders::Html.new
|
34
|
+
builder.build(preserve_tex: true)
|
28
35
|
puts "Done. (#{(Time.now - t).round(2)}s)"
|
29
36
|
|
30
37
|
rescue Softcover::BookManifest::NotFound => e
|
@@ -1,12 +1,14 @@
|
|
1
1
|
# A chapter
|
2
|
+
\label{cha:a_chapter}
|
2
3
|
|
3
|
-
This is the first paragraph of the Softcover Markdown template. It shows how to write a document in Markdown, a lightweight markup language, augmented with the [kramdown](http://kramdown.rubyforge.org/) converter and some custom extensions
|
4
|
+
This is the first paragraph of the Softcover Markdown template. It shows how to write a document in Markdown, a lightweight markup language, augmented with the [kramdown](http://kramdown.rubyforge.org/) converter and some custom extensions, including support for embedded \PolyTeX, a subset of the powerful \LaTeX\ typesetting system. For more information, see [*The Softcover Book*](http://manual.softcover.io/) (**link not live yet**). To learn how to easily publish (and optionally sell) documents produced with Softcover, visit [Softcover.io](http://softcover.io/). Softcover is currently in private beta; go to [Softcover.io](http://softcover.io/) to get an invitation.
|
4
5
|
|
5
6
|
This is the *second* paragraph, showing how to emphasize text.[^sample-footnote] You can also make text **bold** or _emphasize a second way_.
|
6
7
|
|
7
8
|
## A section
|
9
|
+
\label{sec:a_section}
|
8
10
|
|
9
|
-
This is a section.
|
11
|
+
This is a section. You can refer to it using the \LaTeX\ cross-reference syntax, like so: Section~\ref{sec:a_section}.
|
10
12
|
|
11
13
|
### Source code
|
12
14
|
|
@@ -33,14 +35,37 @@ def hello
|
|
33
35
|
end
|
34
36
|
```
|
35
37
|
|
38
|
+
The last of these can be combined with \PolyTeX's `codelisting` environment to make code listings with linked cross-references (Listing~\ref{code:hello}).
|
39
|
+
|
40
|
+
\begin{codelisting}
|
41
|
+
\codecaption{Hello, world.}
|
42
|
+
\label{code:hello}
|
43
|
+
```ruby
|
44
|
+
def hello
|
45
|
+
puts "hello, world!"
|
46
|
+
end
|
47
|
+
```
|
48
|
+
\end{codelisting}
|
49
|
+
|
50
|
+
|
36
51
|
### Mathematics
|
37
52
|
|
38
|
-
Softcover's Markdown mode supports
|
53
|
+
Softcover's Markdown mode supports mathematical typesetting using \LaTeX\ syntax, including inline math, such as \( \phi^2 - \phi - 1 = 0, \) and centered math, such as
|
54
|
+
\[ \phi = \frac{1+\sqrt{5}}{2}. \]
|
55
|
+
It also support centered equations with linked cross-reference via embedded \PolyTeX\ (Eq.~\eqref{eq:phi}).
|
56
|
+
|
57
|
+
\begin{equation}
|
58
|
+
\label{eq:phi}
|
59
|
+
\phi = \frac{1+\sqrt{5}}{2}
|
60
|
+
\end{equation}
|
61
|
+
|
62
|
+
Softcover also supports an alternate math syntax, such as {$$}\phi^2 - \phi - 1 = 0{/$$}, and centered math, such as
|
39
63
|
|
40
64
|
{$$}
|
41
65
|
\phi = \frac{1+\sqrt{5}}{2}.
|
42
66
|
{/$$}
|
43
67
|
|
68
|
+
The \LaTeX\ syntax is strongly preferred, but the alternate syntax is included for maximum compatibility with other systems.
|
44
69
|
|
45
70
|
## Images and tables
|
46
71
|
|
@@ -84,7 +109,7 @@ Commands:
|
|
84
109
|
softcover login # Log into Softcover account
|
85
110
|
softcover logout # Log out of Softcover account
|
86
111
|
softcover new <name> # Generate new book directory structure.
|
87
|
-
softcover open # Open book on Softcover website
|
112
|
+
softcover open # Open book on Softcover website
|
88
113
|
softcover publish # Publish your book on Softcover
|
89
114
|
softcover publish:screencasts # Publish screencasts
|
90
115
|
softcover server # Run local server
|
@@ -110,7 +135,7 @@ This is the end of the template---apart from two mostly empty chapters. In fact,
|
|
110
135
|
|
111
136
|
<<(chapters/yet_another_chapter.md, lang: text)
|
112
137
|
|
113
|
-
Visit
|
138
|
+
Visit [*The Softcover Book*](http://manual.softcover.io) to learn more about what Softcover can do.
|
114
139
|
|
115
140
|
|
116
141
|
[^sample-footnote]: This is a footnote. It is numbered automatically.
|
@@ -1,12 +1,10 @@
|
|
1
1
|
\chapter{A chapter}
|
2
2
|
\label{cha:a_chapter}
|
3
3
|
|
4
|
-
This is the first paragraph of the
|
4
|
+
This is the first paragraph of the Softcover template. It shows how to write a document in \PolyTeX, a subset of the \LaTeX\ typesetting language optimized for ebooks. For more information, see \href{http://manual.softcover.org/book}{\emph{The Softcover Book}} and the \href{http://example.com}{\PolyTeX\ source of the book} (\textbf{links not live yet}). To learn how to easily publish (and optionally sell) documents produced with Softcover, visit \href{http://softcover.io/}{Softcover.io}. Softcover is currently in private beta; go to \href{http://softcover.io/}{Softcover.io} to get an invitation.
|
5
5
|
|
6
6
|
This is the \emph{second} paragraph, showing how to emphasize text.\footnote{This is a footnote. It is numbered automatically.} You can also make text \textbf{bold} or \textit{italicized} (which looks the same as emphasized text).
|
7
7
|
|
8
|
-
\emph{Note}: ``\PolyTeXnic'' is pronounced exactly like the English word \emph{polytechnic}, and ``\LaTeX'' is pronounced \emph{lay}-tech (with ``tech'' as in ``technology'').\footnote{Pronunciations of ``\LaTeX'' differ, but \emph{lay}-tech is the one I prefer.}
|
9
|
-
|
10
8
|
\section{A section}
|
11
9
|
\label{sec:a_section}
|
12
10
|
|
@@ -17,14 +15,14 @@ This is a section. Because it has a label, we can refer to it as Section~\ref{se
|
|
17
15
|
|
18
16
|
This is a subsection. As usual, it can be referenced by label (Section~\ref{sec:source_code}). Note that the label starts with \kode{sec:}, not \kode{ssec:} or \kode{subsec:}. Any of these would work, but I find that sections often become subsections (and vice versa) when figuring out the structure of a book, and using \kode{sec:} to prefix them both saves having to change labels.
|
19
17
|
|
20
|
-
|
18
|
+
Softcover comes with full support for syntax-highlighted source code:
|
21
19
|
%= lang:ruby
|
22
20
|
\begin{code}
|
23
21
|
def hello
|
24
22
|
puts "hello, world!"
|
25
23
|
end
|
26
24
|
\end{code}
|
27
|
-
\noindent
|
25
|
+
\noindent Softcover can highlight any language supported by \href{http://pygments.org/languages/}{Pygments} (which means most of them).
|
28
26
|
|
29
27
|
You can also define \emph{code listings}, as seen in Listing~\ref{code:hello_world}. Such code listings are automatically numbered and linked.
|
30
28
|
|
@@ -63,7 +61,7 @@ Listing~\ref{code:hyphenation} also shows how to escape the underscore character
|
|
63
61
|
\subsection{Mathematics}
|
64
62
|
\label{sec:mathematics}
|
65
63
|
|
66
|
-
|
64
|
+
Softcover supports full mathematical typesetting, including inline math, such as $\phi^2 - \phi - 1 = 0$, and centered math, such as
|
67
65
|
\[ \phi = \frac{1+\sqrt{5}}{2}. \]
|
68
66
|
It also supports cross-referenced equations, as in Eq.~\eqref{eq:golden_ratio} and Eq.~\eqref{eq:stokes_theorem}.
|
69
67
|
|
@@ -82,7 +80,7 @@ It also supports cross-referenced equations, as in Eq.~\eqref{eq:golden_ratio} a
|
|
82
80
|
|
83
81
|
This is the second section. As we saw above above, the first section is Section~\ref{sec:a_section}.
|
84
82
|
|
85
|
-
|
83
|
+
Softcover supports \href{http://en.wikibooks.org/wiki/LaTeX/Floats,_Figures_and_Captions}{\emph{floats}} such as figures and tables, including numbered captions and linked cross-references. The defining quality of a float is that its placement isn't guaranteed (i.e., it ``floats'' in the document), so you shouldn't generally assume it will be placed immediately after the text that precedes it. (Such placement \emph{will} be the case with HTML-based output, but \emph{not} in PDFs, where \TeX's state-of-the-art float placement algorithm is in charge.)
|
86
84
|
|
87
85
|
\subsection{Graphics and figures}
|
88
86
|
\label{sec:graphics_and_figures}
|
@@ -109,7 +107,7 @@ To turn an image into a figure, use the \kode{figure} environment (Figure~\ref{f
|
|
109
107
|
\subsection{Tables and tabular environments}
|
110
108
|
\label{tables_and_tabular}
|
111
109
|
|
112
|
-
|
110
|
+
Softcover supports raw tables via the \kode{tabular} environment. To make a tabular environment into a full-blown table, with a number and a caption, use the \kode{table} environment (Table~\ref{table:rails_actions}), which includes some special magic to make the font size nicer in PDFs.
|
113
111
|
|
114
112
|
\bigskip
|
115
113
|
|
@@ -142,7 +140,7 @@ To turn an image into a figure, use the \kode{figure} environment (Figure~\ref{f
|
|
142
140
|
|
143
141
|
\section{Command-line interface}
|
144
142
|
|
145
|
-
|
143
|
+
Softcover comes with a command-line interface called \kode{poly}. To get more information, just run \kode{poly help}:
|
146
144
|
|
147
145
|
%= lang:console
|
148
146
|
\begin{code}
|
@@ -188,4 +186,4 @@ This is the end of the template---apart from two mostly empty chapters (Chapter~
|
|
188
186
|
|
189
187
|
%= <<(chapters/yet_another_chapter.tex)
|
190
188
|
|
191
|
-
|
189
|
+
See \href{http://manual.softcover.org/book}{\emph{The Softcover Book}} to learn more about what Softcover can do.
|
data/lib/softcover/version.rb
CHANGED
data/spec/cli_spec.rb
CHANGED
@@ -35,13 +35,13 @@ describe Softcover::CLI do
|
|
35
35
|
|
36
36
|
context "softcover new options" do
|
37
37
|
subject { `softcover help new` }
|
38
|
-
it { should include '-
|
38
|
+
it { should include '-p, [--polytex]' }
|
39
39
|
it { should include '-s, [--simple]' }
|
40
40
|
end
|
41
41
|
|
42
42
|
context "softcover new" do
|
43
43
|
before(:all) { chdir_to_fixtures }
|
44
|
-
after(:all)
|
44
|
+
after(:all) { remove_book }
|
45
45
|
it "should not raise error" do
|
46
46
|
result = `softcover new book 2>&1`
|
47
47
|
expect($?.exitstatus).to eq 0
|
@@ -107,7 +107,7 @@ describe Softcover::CLI do
|
|
107
107
|
before(:all) do
|
108
108
|
remove_book
|
109
109
|
chdir_to_fixtures
|
110
|
-
silence { `softcover new book` }
|
110
|
+
silence { `softcover new book --polytex` }
|
111
111
|
chdir_to_book
|
112
112
|
end
|
113
113
|
after(:all) { remove_book }
|
@@ -120,7 +120,7 @@ describe Softcover::CLI do
|
|
120
120
|
before(:all) do
|
121
121
|
remove_book
|
122
122
|
chdir_to_fixtures
|
123
|
-
silence { `softcover new book
|
123
|
+
silence { `softcover new book` }
|
124
124
|
chdir_to_book
|
125
125
|
end
|
126
126
|
after(:all) { remove_book }
|
@@ -7,7 +7,7 @@ describe Softcover::Commands::Generator do
|
|
7
7
|
before(:all) do
|
8
8
|
chdir_to_non_book
|
9
9
|
@name = 'foo_bar'
|
10
|
-
Softcover::Commands::Generator.generate_file_tree @name
|
10
|
+
Softcover::Commands::Generator.generate_file_tree @name, polytex: true
|
11
11
|
end
|
12
12
|
|
13
13
|
let(:name) { @name }
|
@@ -142,7 +142,8 @@ describe Softcover::Commands::Generator do
|
|
142
142
|
before(:all) do
|
143
143
|
chdir_to_non_book
|
144
144
|
@name = 'foo_bar'
|
145
|
-
Softcover::Commands::Generator.generate_file_tree @name, simple: true
|
145
|
+
Softcover::Commands::Generator.generate_file_tree @name, simple: true,
|
146
|
+
polytex: true
|
146
147
|
end
|
147
148
|
|
148
149
|
let(:name) { @name }
|
@@ -196,7 +197,7 @@ describe Softcover::Commands::Generator do
|
|
196
197
|
before(:all) do
|
197
198
|
chdir_to_non_book
|
198
199
|
@name = 'foo_bar'
|
199
|
-
Softcover::Commands::Generator.generate_file_tree @name
|
200
|
+
Softcover::Commands::Generator.generate_file_tree @name
|
200
201
|
end
|
201
202
|
|
202
203
|
let(:name) { @name }
|
@@ -244,7 +245,9 @@ describe Softcover::Commands::Generator do
|
|
244
245
|
$stdin.should_receive(:gets).and_return("a")
|
245
246
|
|
246
247
|
silence do
|
247
|
-
2.times
|
248
|
+
2.times do
|
249
|
+
Softcover::Commands::Generator.generate_file_tree name, polytex: true
|
250
|
+
end
|
248
251
|
end
|
249
252
|
end
|
250
253
|
|
data/spec/webmock_helpers.rb
CHANGED
@@ -159,7 +159,7 @@ module WebmockHelpers
|
|
159
159
|
remove_book
|
160
160
|
Dir.chdir File.join File.dirname(__FILE__), "fixtures/"
|
161
161
|
flags = []
|
162
|
-
flags << '-
|
162
|
+
flags << '-p' unless options[:markdown]
|
163
163
|
flags << '-s' if options[:simple]
|
164
164
|
silence { system "softcover new #{name} #{flags.join(' ')}" }
|
165
165
|
chdir_to_book
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: softcover
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
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-14 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: polytexnic
|