nanoc-latexmk 0.1.0 → 0.1.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 +4 -4
- data/README.md +2 -0
- data/lib/nanoc/latexmk/filters/latexmk.rb +12 -14
- data/lib/nanoc/latexmk/version.rb +1 -1
- data/nanoc-latexmk.gemspec +1 -0
- data/spec/filters/latexmk_spec.rb +23 -0
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 07db9e5256a5237edc34e3047940216d30d72fb3
|
4
|
+
data.tar.gz: 65ab3406dc23d0f6dd874ea3c62560aa50c0868d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 03a8d5b35ea9d2055e9a33cd398dff7d96213780cc29e0b3b00c7b5798ebcd8b81f0473b30fde60ad99e8601d63ea896a849d04eae5b90c8d3365672f7a63ad5
|
7
|
+
data.tar.gz: c36223c99112741cbbe201278a882143477e9d11d427bf93aa8a5a7b2a4e6dc1b17ff01e4760abfa643f79367ac4f4de9c63d6603d8b01199c9060a32d867412
|
data/README.md
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# Nanoc-latexmk
|
2
2
|
|
3
|
+
[](https://badge.fury.io/rb/nanoc-latexmk)
|
4
|
+
|
3
5
|
[Nanoc](https://nanoc.ws/) filter to compile `.tex` files to pdf using the `latexmk` command. Supports both `pdflatex` and `xelatex`.
|
4
6
|
|
5
7
|
## System requirements
|
@@ -3,6 +3,7 @@
|
|
3
3
|
require 'tmpdir'
|
4
4
|
|
5
5
|
module Nanoc::Latexmk::Filters
|
6
|
+
|
6
7
|
class LatexmkFilter < Nanoc::Filter
|
7
8
|
identifier :latexmk
|
8
9
|
|
@@ -11,11 +12,11 @@ module Nanoc::Latexmk::Filters
|
|
11
12
|
TMPFILE_NAME = 'nanoc-latexmk.tex'
|
12
13
|
|
13
14
|
ENGINES = {
|
14
|
-
pdflatex:
|
15
|
-
xelatex:
|
15
|
+
pdflatex: '-pdf',
|
16
|
+
xelatex: '-xelatex'
|
16
17
|
}.freeze
|
17
18
|
|
18
|
-
LATEX_PARAMS = %w[-interaction=nonstopmode -halt-on-error].freeze
|
19
|
+
LATEX_PARAMS = %w[-interaction=nonstopmode -halt-on-error -file-line-error].freeze
|
19
20
|
|
20
21
|
DEFAULT_PARAMS = {
|
21
22
|
engine: :pdflatex,
|
@@ -27,13 +28,11 @@ module Nanoc::Latexmk::Filters
|
|
27
28
|
params = DEFAULT_PARAMS.merge(params)
|
28
29
|
|
29
30
|
raise 'Unknown Engine' unless ENGINES.key? params[:engine].to_sym
|
30
|
-
engine = ENGINES[params[:engine].to_sym]
|
31
|
-
|
32
|
-
latex_command = engine[:cmd]
|
33
31
|
|
34
|
-
|
32
|
+
latex_params = []
|
33
|
+
latex_params += params[:command_params]
|
35
34
|
|
36
|
-
|
35
|
+
latex_params << if params[:shell_escape]
|
37
36
|
'-shell-escape'
|
38
37
|
else
|
39
38
|
'-no-shell-escape'
|
@@ -44,15 +43,14 @@ module Nanoc::Latexmk::Filters
|
|
44
43
|
f.write(content)
|
45
44
|
f.flush
|
46
45
|
|
47
|
-
latexmk_command = ['latexmk',
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
46
|
+
latexmk_command = ['latexmk', ENGINES[params[:engine].to_sym]] \
|
47
|
+
+ latex_params.map { |p| '-latexoption=' + p } \
|
48
|
+
+ ["-output-directory=#{dir}", f.path ]
|
49
|
+
|
50
|
+
puts "Running latexmk command: #{latexmk_command}"
|
52
51
|
|
53
52
|
raise 'Build Error' unless system(*latexmk_command)
|
54
53
|
system('mv', f.path.sub('.tex', '.pdf'), output_filename)
|
55
|
-
|
56
54
|
end
|
57
55
|
end
|
58
56
|
end
|
data/nanoc-latexmk.gemspec
CHANGED
@@ -9,6 +9,7 @@ Gem::Specification.new do |s|
|
|
9
9
|
s.homepage = 'https://github.com/rien/nanoc-latexmk'
|
10
10
|
s.summary = 'Latexmk filter for nanoc.'
|
11
11
|
s.description = 'Nanoc filter to convert latex files to pdf using latexmk'
|
12
|
+
s.license = 'Unlicense'
|
12
13
|
s.files = `git ls-files`.split("\n")
|
13
14
|
s.require_path = 'lib'
|
14
15
|
end
|
@@ -1,5 +1,8 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
require 'byebug'
|
5
|
+
require 'timeout'
|
3
6
|
|
4
7
|
describe Nanoc::Latexmk::Filters::LatexmkFilter do
|
5
8
|
before(:each) do
|
@@ -20,5 +23,25 @@ describe Nanoc::Latexmk::Filters::LatexmkFilter do
|
|
20
23
|
result = File.read @filter.output_filename
|
21
24
|
expect(result.slice(0, @pdf_magic_bytes.length)).to eql(@pdf_magic_bytes)
|
22
25
|
end
|
26
|
+
|
27
|
+
it 'compile to pdf using xelatex' do
|
28
|
+
expect(@filter.run(@input, engine: :xelatex)).to be_truthy
|
29
|
+
|
30
|
+
result = File.read @filter.output_filename
|
31
|
+
expect(result.slice(0, @pdf_magic_bytes.length)).to eql(@pdf_magic_bytes)
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'crash without user interaction' do
|
35
|
+
@broken_input = <<~HEREDOC
|
36
|
+
\\documentclass{article}
|
37
|
+
\\begin{document}
|
38
|
+
\\foobar
|
39
|
+
\\end{document}
|
40
|
+
HEREDOC
|
41
|
+
|
42
|
+
Timeout::timeout(1) do
|
43
|
+
expect { @filter.run(@broken_input) }.to raise_error('Build Error')
|
44
|
+
end
|
45
|
+
end
|
23
46
|
end
|
24
47
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nanoc-latexmk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rien Maertens
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-12-
|
11
|
+
date: 2017-12-30 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Nanoc filter to convert latex files to pdf using latexmk
|
14
14
|
email:
|
@@ -33,7 +33,8 @@ files:
|
|
33
33
|
- spec/filters/latexmk_spec.rb
|
34
34
|
- spec/spec_helper.rb
|
35
35
|
homepage: https://github.com/rien/nanoc-latexmk
|
36
|
-
licenses:
|
36
|
+
licenses:
|
37
|
+
- Unlicense
|
37
38
|
metadata: {}
|
38
39
|
post_install_message:
|
39
40
|
rdoc_options: []
|