mirror of https://github.com/mpastell/Weave.jl
Embed images to html documents
parent
9b170349d1
commit
ded6ce2c2a
|
@ -1,8 +1,8 @@
|
|||
% Intro to Weave.jl with Gadfly
|
||||
% Matti Pastell
|
||||
% 20th April 2016
|
||||
# Intro to Weave.jl with Gadfly
|
||||
|
||||
# Introduction
|
||||
Matti Pastell, 13th December 2016
|
||||
|
||||
## Introduction
|
||||
|
||||
This a sample [Julia](http://julialang.org/) noweb document that can
|
||||
be executed using [Weave.jl](https://github.com/mpastell/Weave.jl).
|
||||
|
@ -31,7 +31,7 @@ weave(Pkg.dir("Weave","examples","gadfly_md_sample.jmd"), informat="markdown",
|
|||
*The documents will be written to the Julia working directory when you
|
||||
use the `out_path = :pwd`.*
|
||||
|
||||
# Capturing code
|
||||
## Capturing code
|
||||
|
||||
The basic code chunk will be run with default options and the code and
|
||||
output will be captured.
|
||||
|
@ -60,11 +60,11 @@ syntax from the source document):
|
|||
plot(y = cumsum(randn(1000, 1)), Geom.line)
|
||||
```
|
||||
|
||||
# Whats next
|
||||
## Whats next
|
||||
|
||||
Read the documentation:
|
||||
|
||||
- stable: <http://mpastell.github.io/Weave.jl/stable/>
|
||||
- latest: <http://mpastell.github.io/Weave.jl/latest/>
|
||||
- stable: [http://mpastell.github.io/Weave.jl/stable/](http://mpastell.github.io/Weave.jl/stable/)
|
||||
- latest: [http://mpastell.github.io/Weave.jl/latest/](http://mpastell.github.io/Weave.jl/latest/)
|
||||
|
||||
See other examples in: <https://github.com/mpastell/Weave.jl/tree/master/examples>
|
||||
See other examples in the [Github repo](https://github.com/mpastell/Weave.jl/tree/master/examples)
|
||||
|
|
|
@ -13,6 +13,7 @@ function format(doc::WeaveDoc)
|
|||
get!(formatdict, :fig_pos, nothing)
|
||||
get!(formatdict, :fig_env, nothing)
|
||||
|
||||
docformat.formatdict[:cwd] = doc.cwd #pass wd to figure formatters
|
||||
|
||||
for chunk in copy(doc.chunks)
|
||||
result = format_chunk(chunk, formatdict, docformat)
|
||||
|
@ -76,6 +77,8 @@ function format_chunk(chunk::CodeChunk, formatdict, docformat)
|
|||
chunk.content = indent(chunk.content, formatdict[:indent])
|
||||
end
|
||||
|
||||
chunk.content = format_code(chunk.content, docformat)
|
||||
|
||||
if !chunk.options[:eval]
|
||||
if chunk.options[:echo]
|
||||
result = "$(formatdict[:codestart])$(chunk.content)\n$(formatdict[:codeend])"
|
||||
|
@ -92,8 +95,7 @@ function format_chunk(chunk::CodeChunk, formatdict, docformat)
|
|||
|
||||
if chunk.options[:echo]
|
||||
#Convert to output format and highlight (html, tex...) if needed
|
||||
formatted_code = format_code(chunk.content, docformat)
|
||||
result = "$(formatdict[:codestart])$(formatted_code)\n$(formatdict[:codeend])\n"
|
||||
result = "$(formatdict[:codestart])$(chunk.content)\n$(formatdict[:codeend])\n"
|
||||
else
|
||||
result = ""
|
||||
end
|
||||
|
@ -127,7 +129,6 @@ function format_chunk(chunk::CodeChunk, formatdict, docformat)
|
|||
end
|
||||
end
|
||||
|
||||
|
||||
return result
|
||||
end
|
||||
|
||||
|
|
|
@ -119,6 +119,19 @@ type MultiMarkdown
|
|||
formatdict::Dict{Symbol,Any}
|
||||
end
|
||||
|
||||
function img_to_base64(fig, ext, cwd)
|
||||
f = open(joinpath(cwd, fig), "r")
|
||||
raw = read(f)
|
||||
close(f)
|
||||
if ext == ".png"
|
||||
return "data:image/png;base64," * stringmime(MIME("image/png"), raw)
|
||||
elseif ext == ".svg"
|
||||
return "data:image/svg+xml;base64," * stringmime(MIME("image/svg+xml"), raw)
|
||||
else
|
||||
return(fig)
|
||||
end
|
||||
end
|
||||
|
||||
function formatfigures(chunk, docformat::JMarkdown2HTML)
|
||||
fignames = chunk.figures
|
||||
caption = chunk.options[:fig_cap]
|
||||
|
@ -135,11 +148,16 @@ function formatfigures(chunk, docformat::JMarkdown2HTML)
|
|||
(attribs != "" && height != nothing ) && (attribs *= ",")
|
||||
height == nothing || (attribs *= " height=\"$height\" ")
|
||||
|
||||
if f_env != nothing
|
||||
if caption != nothing
|
||||
result *= """<figure>\n"""
|
||||
end
|
||||
|
||||
for fig = fignames
|
||||
ext = splitext(fig)[2]
|
||||
if ext == ".png" || ext == ".svg"
|
||||
fig = img_to_base64(fig, ext, docformat.formatdict[:cwd])
|
||||
end
|
||||
|
||||
figstring *= """<img src="$fig" $attribs />\n"""
|
||||
end
|
||||
|
||||
|
@ -151,17 +169,13 @@ function formatfigures(chunk, docformat::JMarkdown2HTML)
|
|||
"""
|
||||
end
|
||||
|
||||
if f_env != nothing
|
||||
if caption != nothing
|
||||
result *= "</figure>\n"
|
||||
end
|
||||
|
||||
return result
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
const multimarkdown = MultiMarkdown("MultiMarkdown",
|
||||
Dict{Symbol,Any}(
|
||||
:codestart => "````julia",
|
||||
|
@ -320,7 +334,7 @@ end
|
|||
function formatfigures(chunk, docformat::MultiMarkdown)
|
||||
fignames = chunk.figures
|
||||
caption = chunk.options[:fig_cap]
|
||||
result = ""J
|
||||
result = ""
|
||||
figstring = ""
|
||||
|
||||
if chunk.options[:out_width] == nothing
|
||||
|
|
Loading…
Reference in New Issue