mirror of https://github.com/mpastell/Weave.jl
146 lines
3.7 KiB
Julia
146 lines
3.7 KiB
Julia
# Default options
|
|
const defaultParams = Dict{Symbol,Any}(
|
|
:storeresults => false,
|
|
:chunk_defaults => Dict{Symbol,Any}(
|
|
:echo => true,
|
|
:results => "markup",
|
|
:hold => false,
|
|
:fig => true,
|
|
:include => true,
|
|
:eval => true,
|
|
:tangle => true,
|
|
:cache => false,
|
|
:fig_cap => nothing,
|
|
# Size in inches
|
|
:fig_width => 6,
|
|
:fig_height => 4,
|
|
:fig_path => "figures",
|
|
:dpi => 96,
|
|
:term => false,
|
|
:display => false,
|
|
:prompt => "\njulia> ",
|
|
:label => nothing,
|
|
:wrap => true,
|
|
:line_width => 75,
|
|
:engine => "julia",
|
|
# :option_AbstractString=> "",
|
|
# Defined in formats
|
|
:fig_ext => nothing,
|
|
:fig_pos => nothing,
|
|
:fig_env => nothing,
|
|
:out_width => nothing,
|
|
:out_height => nothing,
|
|
:skip => false,
|
|
),
|
|
)
|
|
# This one can be changed at runtime, initially a copy of defaults
|
|
const rcParams = deepcopy(defaultParams)
|
|
|
|
"""
|
|
set_chunk_defaults(opts::Dict{Symbol, Any})
|
|
|
|
Set default options for code chunks, use [`get_chunk_defaults`](@ref) to see the current values.
|
|
|
|
E.g.: set default `dpi` to `200` and `fig_width` to `8`
|
|
|
|
```julia
|
|
julia> set_chunk_defaults(Dict{Symbol, Any}(:dpi => 200, fig_width => 8))
|
|
```
|
|
"""
|
|
function set_chunk_defaults(opts::Dict{Symbol,Any})
|
|
merge!(rcParams[:chunk_defaults], opts)
|
|
return nothing
|
|
end
|
|
|
|
"""
|
|
get_chunk_defaults()
|
|
|
|
Get default options used for code chunks.
|
|
"""
|
|
function get_chunk_defaults()
|
|
return (rcParams[:chunk_defaults])
|
|
end
|
|
|
|
"""
|
|
restore_chunk_defaults()
|
|
|
|
Restore Weave.jl default chunk options.
|
|
"""
|
|
function restore_chunk_defaults()
|
|
rcParams[:chunk_defaults] = defaultParams[:chunk_defaults]
|
|
return nothing
|
|
end
|
|
|
|
"""Combine format specific and common options from document header"""
|
|
function combine_args(args, doctype)
|
|
common = Dict()
|
|
specific = Dict()
|
|
for key in keys(args)
|
|
if key in keys(Weave.formats)
|
|
specific[key] = args[key]
|
|
else
|
|
common[key] = args[key]
|
|
end
|
|
end
|
|
haskey(specific, doctype) && merge!(common, specific[doctype])
|
|
common
|
|
end
|
|
|
|
"""
|
|
header_args(doc::WeaveDoc)
|
|
|
|
Get weave arguments from document header.
|
|
"""
|
|
function header_args(
|
|
doc::WeaveDoc,
|
|
out_path,
|
|
fig_ext,
|
|
fig_path,
|
|
cache_path,
|
|
cache,
|
|
throw_errors,
|
|
template,
|
|
highlight_theme,
|
|
css,
|
|
pandoc_options,
|
|
latex_cmd,
|
|
)
|
|
args = get(doc.header, WEAVE_OPTION_NAME, Dict())
|
|
doctype = get(args, "doctype", doc.doctype)
|
|
args = combine_args(args, doctype)
|
|
informat = get(args, "informat", nothing)
|
|
out_path = get(args, "out_path", out_path)
|
|
out_path == ":pwd" && (out_path = :pwd)
|
|
isa(out_path, Symbol) || (out_path = joinpath(dirname(doc.source), out_path))
|
|
fig_path = get(args, "fig_path", fig_path)
|
|
fig_ext = get(args, "fig_ext", fig_ext)
|
|
cache_path = get(args, "cache_path", cache_path)
|
|
cache = Symbol(get(args, "cache", cache))
|
|
throw_errors = get(args, "throw_errors", throw_errors)
|
|
template = get(args, "template", template)
|
|
if template != nothing && !isa(template, Mustache.MustacheTokens) && !isempty(template)
|
|
template = joinpath(dirname(doc.source), template)
|
|
end
|
|
highlight_theme = get(args, "highlight_theme", highlight_theme)
|
|
css = get(args, "css", css)
|
|
pandoc_options = get(args, "pandoc_options", pandoc_options)
|
|
latex_cmd = get(args, "latex_cmd", latex_cmd)
|
|
|
|
return (
|
|
doctype,
|
|
informat,
|
|
out_path,
|
|
args,
|
|
fig_path,
|
|
fig_ext,
|
|
cache_path,
|
|
cache,
|
|
throw_errors,
|
|
template,
|
|
highlight_theme,
|
|
css,
|
|
pandoc_options,
|
|
latex_cmd,
|
|
)
|
|
end
|