mirror of
https://github.com/wassname/jupyter_contrib_nbextensions.git
synced 2026-06-27 16:10:24 +08:00
Merge pull request #802 from jcb91/latex_envs
also remove latex_envs nbconvert_support things
This commit is contained in:
@@ -42,7 +42,6 @@ test:
|
||||
- jupyter_contrib_nbextensions.migrate
|
||||
- jupyter_contrib_nbextensions.nbconvert_support
|
||||
- jupyter_contrib_nbextensions.nbconvert_support.embedhtml
|
||||
- jupyter_contrib_nbextensions.nbconvert_support.latex_envs
|
||||
- jupyter_contrib_nbextensions.nbconvert_support.pp_highlighter
|
||||
- jupyter_contrib_nbextensions.nbconvert_support.pre_codefolding
|
||||
- jupyter_contrib_nbextensions.nbconvert_support.pre_collapsible_headings
|
||||
|
||||
+1
-3
@@ -60,9 +60,7 @@ exclude_patterns = [
|
||||
'example.ipynb',
|
||||
'README.md',
|
||||
'src/jupyter_contrib_nbextensions/nbextensions/exercise/history.md',
|
||||
'src/jupyter_contrib_nbextensions/nbextensions/latex_envs/doc/README.md',
|
||||
('src/jupyter_contrib_nbextensions/nbextensions/' +
|
||||
'slidemode/slidemode2/README.md'),
|
||||
'src/jupyter_contrib_nbextensions/nbextensions/slidemode/slidemode2/README.md', # noqa
|
||||
'venv',
|
||||
]
|
||||
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
import os
|
||||
|
||||
from .latex_envs import LenvsHTMLExporter, LenvsLatexExporter
|
||||
from .pp_highlighter import HighlighterPostProcessor, HighlighterPreprocessor
|
||||
from .pre_codefolding import CodeFoldingPreprocessor
|
||||
from .pre_collapsible_headings import CollapsibleHeadingsPreprocessor
|
||||
|
||||
@@ -1,461 +0,0 @@
|
||||
"""Classes providing nbconvert support for the latex_envs nbextension."""
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# Copyright (c) 2016, the IPython IPython-Contrib Development Team.
|
||||
#
|
||||
# Distributed under the terms of the Modified BSD License.
|
||||
#
|
||||
# -----------------------------------------------------------------------------
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# Imports
|
||||
# -----------------------------------------------------------------------------
|
||||
|
||||
# Stdlib imports
|
||||
# import os
|
||||
import re
|
||||
|
||||
# A small utilitary function
|
||||
from IPython.display import HTML, display
|
||||
from nbconvert.exporters.exporter import Exporter
|
||||
from nbconvert.exporters.html import HTMLExporter
|
||||
from nbconvert.exporters.latex import LatexExporter
|
||||
# from nbconvert.postprocessors.base import PostProcessorBase
|
||||
from nbconvert.filters.highlight import Highlight2HTML, Highlight2Latex
|
||||
from nbconvert.preprocessors import Preprocessor
|
||||
from traitlets import Bool, Dict
|
||||
from traitlets.config import Config
|
||||
|
||||
|
||||
# IPython imports
|
||||
|
||||
|
||||
def figcaption(text, label=" "):
|
||||
display(HTML("<div class=caption><b> Caption: </b> %s</div>"
|
||||
% text.replace('\n', '<br>')))
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# Preprocessors, Exporters, PostProcessors
|
||||
# -----------------------------------------------------------------------------
|
||||
|
||||
|
||||
class LenvsLatexPreprocessor(Preprocessor):
|
||||
"""
|
||||
:mod:`nbconvert` Preprocessor for the ``latex_envs`` nbextension.
|
||||
|
||||
For use for LaTeX output.
|
||||
"""
|
||||
|
||||
environmentMap = ['thm', 'lem', 'cor', 'prop', 'defn', 'rem',
|
||||
'prob', 'excs', 'examp', 'theorem', 'lemma',
|
||||
'corollary', 'proposition', 'definition', 'remark',
|
||||
'problem', 'exercise', 'example', 'proof', 'property',
|
||||
'itemize', 'enumerate', 'theo', 'enum']
|
||||
# this map should match the map defined in thmsInNb4.js
|
||||
# do not include figure
|
||||
|
||||
def __call__(self, nb, resources):
|
||||
if self.enabled:
|
||||
self.log.debug("Applying preprocessor: %s",
|
||||
self.__class__.__name__)
|
||||
return self.preprocess(nb, resources)
|
||||
else:
|
||||
return nb, resources
|
||||
|
||||
def preprocess(self, nb, resources):
|
||||
"""
|
||||
Preprocessing to apply on each notebook.
|
||||
|
||||
Must return modified nb, resources.
|
||||
|
||||
If you wish to apply your preprocessing to each cell, you might want
|
||||
to override preprocess_cell method instead.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
nb : NotebookNode
|
||||
Notebook being converted
|
||||
resources : dictionary
|
||||
Additional resources used in the conversion process. Allows
|
||||
preprocessors to pass variables into the Jinja engine.
|
||||
"""
|
||||
for index, cell in enumerate(nb.cells):
|
||||
nb.cells[index], resources = self.preprocess_cell(cell,
|
||||
resources, index)
|
||||
return nb, resources
|
||||
|
||||
def replacement(self, match):
|
||||
theenv = match.group(1)
|
||||
tobetranslated = match.group(2)
|
||||
out = "!sl!begin!op!" + theenv + '!cl!' + tobetranslated + "!sl!end!op!" + theenv + '!cl!' # noqa
|
||||
out = out.replace('\n', '!nl!')
|
||||
if theenv in self.environmentMap:
|
||||
return out
|
||||
else:
|
||||
tobetranslated = tobetranslated.replace('\\begin', '/begin')
|
||||
tobetranslated = tobetranslated.replace('\\end', '/end')
|
||||
return out
|
||||
|
||||
def preprocess_cell(self, cell, resources, index):
|
||||
"""
|
||||
Preprocess cell
|
||||
|
||||
Parameters
|
||||
----------
|
||||
cell : NotebookNode cell
|
||||
Notebook cell being processed
|
||||
resources : dictionary
|
||||
Additional resources used in the conversion process. Allows
|
||||
preprocessors to pass variables into the Jinja engine.
|
||||
cell_index : int
|
||||
Index of the cell being processed (see base.py)
|
||||
"""
|
||||
if cell.cell_type == "markdown":
|
||||
data = cell.source
|
||||
code = re.search(r'\\begin{(\w+)}([\s\S]*?)\\end{\1}', data)
|
||||
# data=data.replace(r"{enumerate}",r"{enum}")
|
||||
while (code is not None):
|
||||
data = re.sub(r'\\begin{(\w+)}([\s\S]*?)\\end{\1}',
|
||||
self.replacement, data)
|
||||
data = data.replace(r"{enum}", r"{enumerate}")
|
||||
data = data.replace(r'\item', r'/item')
|
||||
code = re.search(r'\\begin{(\w+)}([\s\S]*?)\\end{\1}', data)
|
||||
# cell.source = cell.source.replace('\n','!nl!')
|
||||
data = data.replace("/begin", "\\begin")
|
||||
data = data.replace("/end", "\\end")
|
||||
cell.source = data
|
||||
return cell, resources
|
||||
|
||||
|
||||
class LenvsHTMLPreprocessor(Preprocessor):
|
||||
"""
|
||||
:mod:`nbconvert` PostProcessor for the ``highlighter`` nbextension.
|
||||
|
||||
For use with html output.
|
||||
"""
|
||||
|
||||
environmentMap = ['thm', 'lem', 'cor', 'prop', 'defn', 'rem',
|
||||
'prob', 'excs', 'examp', 'theorem', 'lemma',
|
||||
'corollary', 'proposition', 'definition', 'remark',
|
||||
'problem', 'exercise', 'example', 'proof', 'property',
|
||||
'itemize', 'enumerate', 'theo', 'enum']
|
||||
# this map should match the map defined in thmsInNb4.js
|
||||
# do not include figure
|
||||
|
||||
def replacement(self, match):
|
||||
return "\n" + match.group(0)
|
||||
|
||||
def preprocess_cell(self, cell, resources, index):
|
||||
"""
|
||||
Preprocess cell
|
||||
|
||||
Parameters
|
||||
----------
|
||||
cell : NotebookNode cell
|
||||
Notebook cell being processed
|
||||
resources : dictionary
|
||||
Additional resources used in the conversion process. Allows
|
||||
preprocessors to pass variables into the Jinja engine.
|
||||
cell_index : int
|
||||
Index of the cell being processed (see base.py)
|
||||
"""
|
||||
# Add a newline before each environment: this is a workaround
|
||||
# for a bug in mistune where
|
||||
# the environment contents will be converted from markdown
|
||||
# this has unwanted consequences for equations
|
||||
# ref: https://github.com/jupyter/nbconvert/issues/160
|
||||
if cell.cell_type == "markdown":
|
||||
cell.source = re.sub(r'\\begin{(\w+)}([\s\S]*?)\\end{\1}',
|
||||
self.replacement, cell.source)
|
||||
return cell, resources
|
||||
|
||||
|
||||
class LenvsHTMLExporter(HTMLExporter):
|
||||
"""
|
||||
Exports to an html document, embedding latex_envs nbextension features.
|
||||
|
||||
Example usage::
|
||||
|
||||
jupyter nbconvert --to html_lenvs FILE.ipynb
|
||||
"""
|
||||
|
||||
def __init__(self, config=None, **kw):
|
||||
"""
|
||||
Public constructor
|
||||
|
||||
Parameters
|
||||
----------
|
||||
config : :class:`~traitlets.config.Config`
|
||||
User configuration instance.
|
||||
`**kw`
|
||||
Additional keyword arguments passed to parent __init__
|
||||
|
||||
"""
|
||||
with_default_config = self.default_config
|
||||
if config:
|
||||
with_default_config.merge(config)
|
||||
|
||||
super(HTMLExporter, self).__init__(
|
||||
config=with_default_config, **kw)
|
||||
self.register_preprocessor(LenvsHTMLPreprocessor(), enabled=True)
|
||||
|
||||
self._init_preprocessors()
|
||||
|
||||
def _file_extension_default(self):
|
||||
return '.html'
|
||||
|
||||
def _template_file_default(self):
|
||||
return 'latex_envs'
|
||||
|
||||
output_mimetype = 'text/html'
|
||||
|
||||
def _raw_mimetypes_default(self):
|
||||
return ['text/markdown', 'text/html', '']
|
||||
|
||||
@property
|
||||
def default_config(self):
|
||||
# import jupyter_core.paths
|
||||
# import os
|
||||
c = Config({
|
||||
'NbConvertBase': {
|
||||
'display_data_priority': ['application/javascript',
|
||||
'text/html',
|
||||
'text/markdown',
|
||||
'image/svg+xml',
|
||||
'text/latex',
|
||||
'image/png',
|
||||
'image/jpeg',
|
||||
'text/plain'
|
||||
]
|
||||
},
|
||||
'CSSHTMLHeaderPreprocessor': {
|
||||
'enabled': True
|
||||
},
|
||||
'HighlightMagicsPreprocessor': {
|
||||
'enabled': True
|
||||
},
|
||||
'ExtractOutputPreprocessor': {'enabled': True},
|
||||
'latex_envs.LenvsHTMLPreprocessor': {'enabled': True}}
|
||||
)
|
||||
from jupyter_contrib_nbextensions.nbconvert_support import (
|
||||
templates_directory)
|
||||
c.merge(super(LenvsHTMLExporter, self).default_config)
|
||||
|
||||
# user_templates = os.path.join(jupyter_core.paths.jupyter_data_dir(),
|
||||
# 'templates')
|
||||
c.TemplateExporter.template_path = ['.', templates_directory()]
|
||||
# c.Exporter.preprocessors = ['tmp.LenvsLatexPreprocessor' ]
|
||||
# c.NbConvertApp.postprocessor_class = 'tmp.TocPostProcessor'
|
||||
return c
|
||||
|
||||
def from_notebook_node(self, nb, resources=None, **kw):
|
||||
langinfo = nb.metadata.get('language_info', {})
|
||||
lexer = langinfo.get('pygments_lexer', langinfo.get('name', None))
|
||||
self.register_filter('highlight_code',
|
||||
Highlight2HTML(pygments_lexer=lexer,
|
||||
parent=self))
|
||||
lenvshtmlpreprocessor = LenvsHTMLPreprocessor()
|
||||
|
||||
self.register_preprocessor(lenvshtmlpreprocessor, enabled=True)
|
||||
self._init_preprocessors()
|
||||
nb, resources = lenvshtmlpreprocessor(nb, resources)
|
||||
output, resources = super(LenvsHTMLExporter,
|
||||
self).from_notebook_node(
|
||||
nb, resources, **kw)
|
||||
# postout = postprocess(output)
|
||||
# print(postout[0:200]) #WORKS
|
||||
return output, resources
|
||||
|
||||
###################
|
||||
|
||||
|
||||
class LenvsTocHTMLExporter(LenvsHTMLExporter):
|
||||
"""Exports to an html document, embedding latex_env and toc extensions."""
|
||||
|
||||
def _template_file_default(self):
|
||||
return 'latex_envs_toc'
|
||||
|
||||
|
||||
################
|
||||
|
||||
class LenvsLatexExporter(LatexExporter):
|
||||
"""
|
||||
Exports to a LaTeX document, embedding latex_envs nbextension features.
|
||||
|
||||
To export notebooks to plain and html while keeping all the features of
|
||||
the latex_envs notebook extension in the converted version.
|
||||
The LaTeX converter also exposes several conversion options (read the
|
||||
docs).
|
||||
|
||||
Example usage::
|
||||
|
||||
jupyter nbconvert --to latex_lenvs FILE.ipynb
|
||||
"""
|
||||
|
||||
removeHeaders = Bool(False, shortname="rh",
|
||||
help="Remove headers and footers").tag(config=True)
|
||||
figcaptionProcess = Bool(True, shortname="fc",
|
||||
help="Process figcaptions").tag(config=True)
|
||||
tocrefRemove = Bool(True, shortname="fc",
|
||||
help="Remove tocs and ref sections, + some cleaning").tag(config=True) # noqa
|
||||
flags = Dict(dict(enable=({'Bar': {'enabled': True}}, "Enable Bar")))
|
||||
|
||||
def __init__(self, config=None, **kw):
|
||||
"""
|
||||
Public constructor
|
||||
|
||||
Parameters
|
||||
----------
|
||||
config : :class:`~traitlets.config.Config`
|
||||
User configuration instance.
|
||||
`**kw`
|
||||
Additional keyword arguments passed to parent __init__
|
||||
|
||||
"""
|
||||
with_default_config = self.default_config
|
||||
if config:
|
||||
with_default_config.merge(config)
|
||||
|
||||
super(Exporter, self).__init__(config=with_default_config, **kw)
|
||||
self.register_preprocessor(LenvsLatexPreprocessor(), enabled=True)
|
||||
|
||||
self._init_preprocessors()
|
||||
|
||||
def _file_extension_default(self):
|
||||
return '.tex'
|
||||
|
||||
def _template_file_default(self):
|
||||
return 'thmsInNb_article'
|
||||
|
||||
output_mimetype = 'text/tex'
|
||||
|
||||
def _raw_mimetypes_default(self):
|
||||
return ['text/tex', 'text/txt', '']
|
||||
|
||||
@property
|
||||
def default_config(self):
|
||||
# import jupyter_core.paths
|
||||
# import os
|
||||
c = Config({
|
||||
'NbConvertBase': {
|
||||
'display_data_priority': ['application/javascript',
|
||||
'text/html',
|
||||
'text/markdown',
|
||||
'image/svg+xml',
|
||||
'text/latex',
|
||||
'image/png',
|
||||
'image/jpeg',
|
||||
'text/plain'
|
||||
]
|
||||
},
|
||||
'CSSHTMLHeaderPreprocessor': {
|
||||
'enabled': True},
|
||||
'HighlightMagicsPreprocessor': {
|
||||
'enabled': True},
|
||||
'ExtractOutputPreprocessor': {
|
||||
'enabled': True},
|
||||
'latex_envs.LenvsLatexPreprocessor': {'enabled': True}
|
||||
}
|
||||
)
|
||||
from jupyter_contrib_nbextensions.nbconvert_support import (
|
||||
templates_directory)
|
||||
c.merge(super(LenvsLatexExporter, self).default_config)
|
||||
|
||||
# user_templates = os.path.join(jupyter_core.paths.jupyter_data_dir(),
|
||||
# 'templates')
|
||||
c.TemplateExporter.template_path = ['.', templates_directory()]
|
||||
|
||||
# c.Exporter.preprocessors = ['tmp.LenvsLatexPreprocessor' ]
|
||||
# c.NbConvertApp.postprocessor_class = 'tmp.TocPostProcessor'
|
||||
return c
|
||||
|
||||
def tocrefrm(self, text):
|
||||
# Remove Table of Contents section
|
||||
newtext = re.sub(r'\\section{Table of Contents}([\s\S]*?)(?=(?:\\[sub]?section|\\chapter))', '', text, flags=re.M) # noqa
|
||||
# Remove References section
|
||||
newtext = re.sub(r'\\section{References}[\S\s]*?(?=(?:\\[sub]*section|\\chapter|\\end{document}|\Z))', '', newtext, flags=re.M) # noqa
|
||||
# Cleaning
|
||||
newtext = re.sub('\\\\begin{verbatim}[\s]*?<matplotlib\.[\S ]*?>[\s]*?\\\\end{verbatim}', '', newtext, flags=re.M) # noqa
|
||||
newtext = re.sub('\\\\begin{verbatim}[\s]*?<IPython\.core\.display[\S ]*?>[\s]*?\\\\end{verbatim}', '', newtext, flags=re.M) # noqa
|
||||
# bottom page with links to Index/back/next (suppress this)
|
||||
# '----[\s]*?<div align=right> [Index](toc.ipynb)[\S ]*?.ipynb\)</div>'
|
||||
newtext = re.sub('\\\\begin{center}\\\\rule{3in}{0.4pt}\\\\end{center}[\s]*?\\\\href{toc.ipynb}{Index}[\S\s ]*?.ipynb}{Next}', '', newtext, flags=re.M) # noqa
|
||||
return newtext
|
||||
|
||||
def figcaption(self, nb_text):
|
||||
# Looks for figcaption in the text. Then for the included image
|
||||
# with \adjustimage...Then extracts caption and label from the
|
||||
# figcaption and redraws the figure using a figure environment
|
||||
# and an \includegraphics figcaption(text,label=)
|
||||
tofind = "figcaption\(([\s\S]*?)\)\n([\s\S]*?)\\\\begin{center}\s*\\\\adjustimage[\s\S]*?}}{([\S]*?)}\s*\\\\end{center}" # noqa
|
||||
|
||||
def replacement(text):
|
||||
cap = re.match("\"([\S\s]*?)\",[\S\s]*?label=\"([\S]*?)\"", text.group(1)) # noqa
|
||||
if cap is None:
|
||||
cap = re.match("\"([\S\s]*?)\"", text.group(1), re.M)
|
||||
if cap is not None:
|
||||
caption = cap.group(1)
|
||||
else:
|
||||
caption = '""'
|
||||
label = ""
|
||||
rep = "\n%s\n\\begin{figure}[H]\n\\centering\n\\includegraphics[width=0.6\\linewidth]{%s}\n\\caption{%s}\n\\end{figure}" % (text.group(2), text.group(3), caption) # noqa
|
||||
else:
|
||||
caption = cap.group(1)
|
||||
label = cap.group(2)
|
||||
rep = "\n%s\n\\begin{figure}[H]\n\\centering\n\\includegraphics[width=0.6\\linewidth]{%s}\n\\caption{%s}\n\\label{%s}\n\\end{figure}" % (text.group(2), text.group(3), caption, label) # noqa
|
||||
return rep
|
||||
|
||||
code = re.search(tofind, nb_text)
|
||||
while (code is not None):
|
||||
nb_text = re.sub(tofind, replacement, nb_text, flags=re.M)
|
||||
code = re.search(tofind, nb_text)
|
||||
return nb_text
|
||||
|
||||
def postprocess(self, nb_text):
|
||||
nb_text = nb_text.replace('!nl!', '\n')
|
||||
nb_text = nb_text.replace('!op!', '{')
|
||||
nb_text = nb_text.replace('!cl!', '}')
|
||||
nb_text = nb_text.replace('!sl!', '\\')
|
||||
nb_text = nb_text.replace(r'/item', r'\item')
|
||||
|
||||
# print('SELF--->',dir(self))
|
||||
if self.removeHeaders:
|
||||
tex_text = re.search('begin{document}([\s\S]*?)\\\\end{document}', nb_text, flags=re.M) # noqa
|
||||
newtext = tex_text.group(1)
|
||||
newtext = newtext.replace('\maketitle', '')
|
||||
newtext = newtext.replace('\\tableofcontents', '')
|
||||
nb_text = newtext
|
||||
if self.figcaptionProcess:
|
||||
nb_text = self.figcaption(nb_text)
|
||||
if self.tocrefRemove:
|
||||
nb_text = self.tocrefrm(nb_text)
|
||||
return nb_text
|
||||
|
||||
def from_notebook_node(self, nb, resources=None, **kw):
|
||||
langinfo = nb.metadata.get('language_info', {})
|
||||
lexer = langinfo.get('pygments_lexer', langinfo.get('name', None))
|
||||
self.register_filter('highlight_code',
|
||||
Highlight2Latex(pygments_lexer=lexer,
|
||||
parent=self))
|
||||
lenvslatexpreprocessor = LenvsLatexPreprocessor()
|
||||
|
||||
self.register_preprocessor(lenvslatexpreprocessor, enabled=True)
|
||||
self._init_preprocessors()
|
||||
nb, resources = lenvslatexpreprocessor(nb, resources)
|
||||
output, resources = super(LenvsLatexExporter, self).from_notebook_node(nb, resources, **kw) # noqa
|
||||
postout = self.postprocess(output)
|
||||
# postout = postout.replace('sklearn','Tonio')
|
||||
# print(postout[0:200]) #WORKS
|
||||
|
||||
return postout, resources
|
||||
|
||||
# jupyter nbconvert --to latex_envs.LenvsLatexExporter
|
||||
# --LenvsLatexExporter.removeHeaders=True
|
||||
# --LenvsLatexExporter.figcaptionProcess=True
|
||||
# --LenvsLatexExporter.tocrefRemove=True test_theo.ipynb
|
||||
|
||||
# once entry point are installed
|
||||
# jupyter nbconvert --to latex_lenvs --figcaptionProcess=true
|
||||
# --removeHeaders=false test_theo
|
||||
|
||||
# jupyter nbconvert --to latex_envs.LenvsHTMLExporter test_theo.ipynb
|
||||
@@ -1,91 +0,0 @@
|
||||
{%- extends 'full.tpl' -%}
|
||||
|
||||
|
||||
{%- block html_head -%}
|
||||
|
||||
<meta charset="utf-8"/>
|
||||
|
||||
<!-- javascript from CDN for conversion -->
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/marked/0.3.5/marked.js"></script>
|
||||
|
||||
|
||||
|
||||
{% if nb['metadata']['latex_envs']['eqLabelWithNumbers'] == True %}
|
||||
<script type="text/x-mathjax-config">
|
||||
// make sure that equations numbers are enabled
|
||||
MathJax.Hub.Config({ TeX: { equationNumbers: {
|
||||
autoNumber: "AMS", // All AMS equations are numbered
|
||||
useLabelIds: true, // labels as ids
|
||||
// format the equation number - uses an offset eqNumInitial (default 0)
|
||||
formatNumber: function (n) {return String(Number(n)+Number({{nb['metadata']['latex_envs']['eqNumInitial']}} ))}
|
||||
} }
|
||||
});
|
||||
</script>
|
||||
{% else %}
|
||||
<script type="text/x-mathjax-config">
|
||||
// make sure that equations numbers are enabled
|
||||
MathJax.Hub.Config({ TeX: { equationNumbers: {
|
||||
autoNumber: "none", // All AMS equations are numbered
|
||||
useLabelIds: true, // labels as ids
|
||||
} }
|
||||
});
|
||||
</script>
|
||||
{% endif %}
|
||||
|
||||
|
||||
{{ super() }}
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="http://code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
|
||||
|
||||
|
||||
<!-- stylesheet from CDN -->
|
||||
<link rel="stylesheet" type="text/css" href="https://rawgit.com/ipython-contrib/jupyter_contrib_nbextensions/master/src/jupyter_contrib_nbextensions/nbextensions/latex_envs/latex_envs.css">
|
||||
|
||||
<!-- Custom stylesheet, it must be in the same directory as the html file -->
|
||||
<link rel="stylesheet" href="custom.css">
|
||||
|
||||
<!-- Load mathjax
|
||||
<script src="https://rawgit.com/ipython-contrib/jupyter_contrib_nbextensions/master/src/jupyter_contrib_nbextensions/nbextensions/latex_envs/thmsInNb4.js"></script>
|
||||
-->
|
||||
<script type="text/javascript" src="https://rawgit.com/jfbercher/jupyter_contrib_nbextensions/latex_envs/src/jupyter_contrib_nbextensions/nbextensions/latex_envs/thmsInNb4.js"> </script>
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
$( document ).ready(function(){
|
||||
|
||||
//Value of configuration variables, some taken from the notebook's metada.
|
||||
eqNum = 0; // begins equation numbering at eqNum+1
|
||||
eqLabelWithNumbers = "{{nb['metadata']['latex_envs']['eqLabelWithNumbers']}}"=="True" ? true : false; //if true, label equations with equation numbers;
|
||||
//otherwise using the tag specified by \label
|
||||
conversion_to_html = false;
|
||||
current_cit=1;
|
||||
cite_by='key'; //only number and key are supported
|
||||
//var document={}
|
||||
document.bibliography={};
|
||||
|
||||
|
||||
// fire the main function with these parameters
|
||||
var html_to_analyse = $('body').html()
|
||||
var html_converted = thmsInNbConv(marked,html_to_analyse);
|
||||
$('body').html(html_converted)
|
||||
|
||||
});
|
||||
</script>
|
||||
|
||||
{%- endblock html_head -%}
|
||||
|
||||
{% block body %}
|
||||
|
||||
|
||||
{{ super() }}
|
||||
|
||||
|
||||
|
||||
{%- endblock body %}
|
||||
|
||||
{% block footer %}
|
||||
</html>
|
||||
{% endblock footer %}
|
||||
@@ -1,170 +0,0 @@
|
||||
((*- extends 'article.tplx' -*))
|
||||
|
||||
((* block h1 -*))\section((* endblock h1 -*))
|
||||
((* block h2 -*))\subsection((* endblock h2 -*))
|
||||
((* block h3 -*))\subsubsection((* endblock h3 -*))
|
||||
((* block h4 -*))\paragraph((* endblock h4 -*))
|
||||
((* block h5 -*))\subparagraph((* endblock h5 -*))
|
||||
|
||||
|
||||
((* block abstract *))
|
||||
\tableofcontents
|
||||
%~\par
|
||||
%\newpage
|
||||
((* endblock abstract *))
|
||||
|
||||
%or?
|
||||
%((* block toc *))\tableofcontents((* endblock toc *))
|
||||
|
||||
|
||||
%===============================================================================
|
||||
% My custom output style
|
||||
%===============================================================================
|
||||
% A custom cell style that places code in a simple verbatim and prints "Input #"
|
||||
% and "Output #" cell prompts.
|
||||
|
||||
((*- block in_prompt -*))
|
||||
% No prompt!
|
||||
%\textbf{Input \#{}(((cell.prompt_number)))}
|
||||
|
||||
((*- endblock in_prompt -*))
|
||||
|
||||
((*- block input -*))
|
||||
%
|
||||
\begin{lstlisting}
|
||||
((( cell.source )))
|
||||
\end{lstlisting}
|
||||
((*- endblock input -*))
|
||||
|
||||
% ok
|
||||
|
||||
%but may be this?
|
||||
|
||||
%((*- block output_prompt -*))
|
||||
% No prompt!
|
||||
%\textbf{Output \#{}(((cell.prompt_number)))}
|
||||
%((*- endblock output_prompt -*))
|
||||
|
||||
|
||||
((* block author *))
|
||||
\author{J.-F. Bercher}
|
||||
((* endblock author *))
|
||||
|
||||
((* block title *))
|
||||
\title{ }
|
||||
((* endblock title *))
|
||||
|
||||
((* block packages *))
|
||||
((( super() )))
|
||||
\usepackage{listings}
|
||||
((* endblock packages *))
|
||||
|
||||
%or -- both work
|
||||
((* block header *))
|
||||
((( super() )))
|
||||
%\usepackage{foo}
|
||||
((* endblock *))
|
||||
|
||||
|
||||
((* block commands *))
|
||||
% Prevent overflowing lines due to hard-to-break entities
|
||||
\sloppy
|
||||
% Setup hyperref package
|
||||
\hypersetup{
|
||||
breaklinks=true, % so long urls are correctly broken across lines
|
||||
pdftitle={\@title},
|
||||
pdfauthor={\@author},
|
||||
colorlinks=true, %colorise les liens
|
||||
breaklinks=true, %permet le retour à la ligne dans les liens trop longs
|
||||
urlcolor= blue, %couleur des hyperliens
|
||||
linkcolor= blue, %couleur des liens internes
|
||||
citecolor=blue, %couleur des liens de citations
|
||||
bookmarksopen=false,
|
||||
pdftoolbar=false,
|
||||
pdfmenubar=false,
|
||||
% hidelinks
|
||||
}
|
||||
% Slightly bigger margins than the latex defaults
|
||||
\geometry{verbose,tmargin=1in,bmargin=1in,lmargin=1in,rmargin=1in}
|
||||
%listings configuration
|
||||
|
||||
\definecolor{mygreen}{rgb}{0,0.6,0}
|
||||
\definecolor{mygray}{rgb}{0.5,0.5,0.5}
|
||||
\definecolor{mymauve}{rgb}{0.58,0,0.82}
|
||||
\lstset{
|
||||
language=Python,
|
||||
commentstyle=\color{mygreen},
|
||||
keywordstyle=\color{blue},
|
||||
stringstyle=\color{mymauve},
|
||||
xleftmargin= 1cm,
|
||||
xrightmargin= 1cm,
|
||||
showstringspaces=false,
|
||||
breaklines=true,
|
||||
texcl=false,
|
||||
% basicstyle=\ttfamily,
|
||||
frame=single,
|
||||
frameround=tttt,
|
||||
framesep=10pt,
|
||||
%framexleftmargin=10pt,
|
||||
%framexrightmargin =10pt,
|
||||
%frameshape={RYRYNYYYY}{yny}{yny}{RYRYNYYYY}
|
||||
inputencoding=utf8,
|
||||
extendedchars=true,
|
||||
literate=%
|
||||
{é}{{\'{e}}}1
|
||||
{è}{{\`{e}}}1
|
||||
{ê}{{\^{e}}}1
|
||||
{ë}{{\¨{e}}}1
|
||||
{É}{{\'{E}}}1
|
||||
{Ê}{{\^{E}}}1
|
||||
{û}{{\^{u}}}1
|
||||
{ù}{{\`{u}}}1
|
||||
{à}{{\`{a}}}1
|
||||
{ç}{{\c{c}}}1
|
||||
{Ç}{{\c{C}}}1
|
||||
{î}{{\^{i}}}1
|
||||
{Î}{{\^{I}}}1
|
||||
}
|
||||
((* endblock commands *))
|
||||
|
||||
|
||||
% Display latex
|
||||
|
||||
((* block data_latex -*))
|
||||
((*- if output.latex.startswith('$'): -*))
|
||||
((= Replace $ symbols with more explicit, equation block. =))
|
||||
\begin{equation}
|
||||
((( output.latex | strip_dollars )))
|
||||
\end{equation}
|
||||
((*- else -*))
|
||||
((( output.latex )))
|
||||
((*- endif *))
|
||||
((* endblock data_latex *))
|
||||
|
||||
|
||||
|
||||
((* block bibliography *))
|
||||
%\bibliographystyle{ieetran}
|
||||
%\bibliography{Thesis}
|
||||
((* endblock bibliography *))
|
||||
|
||||
% Draw a figure using the graphicx package.
|
||||
((* macro draw_figure(filename) -*))
|
||||
((* set filename = filename | posix_path *))
|
||||
((*- block figure scoped -*))
|
||||
\begin{center}
|
||||
\adjustimage{max size={0.6\linewidth}{0.6\paperheight}}{((( filename )))}
|
||||
\end{center}
|
||||
% { \hspace*{\fill} \\}
|
||||
((*- endblock figure -*))
|
||||
((*- endmacro *))
|
||||
|
||||
|
||||
%============================================================
|
||||
((= This line selects the cell style. =))
|
||||
%((* set cell_style = 'style_bw_python.tplx' *))
|
||||
((* set cell_style = 'style_python.tplx' *))
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,171 +0,0 @@
|
||||
((*- extends 'report.tplx' -*))
|
||||
|
||||
((* block h1 -*))\chapter((* endblock h1 -*))
|
||||
((* block h2 -*))\section((* endblock h2 -*))
|
||||
((* block h3 -*))\subsection((* endblock h3 -*))
|
||||
((* block h4 -*))\subsubsection((* endblock h4 -*))
|
||||
((* block h5 -*))\paragraph((* endblock h5 -*))
|
||||
|
||||
|
||||
((* block abstract *))
|
||||
\tableofcontents
|
||||
%~\par
|
||||
%\newpage
|
||||
((* endblock abstract *))
|
||||
|
||||
%or?
|
||||
%((* block toc *))\tableofcontents((* endblock toc *))
|
||||
|
||||
|
||||
%===============================================================================
|
||||
% My custom output style
|
||||
%===============================================================================
|
||||
% A custom cell style that places code in a simple verbatim and prints "Input #"
|
||||
% and "Output #" cell prompts.
|
||||
|
||||
((*- block in_prompt -*))
|
||||
% No prompt!
|
||||
%\textbf{Input \#{}(((cell.prompt_number)))}
|
||||
|
||||
((*- endblock in_prompt -*))
|
||||
|
||||
((*- block input -*))
|
||||
%
|
||||
\begin{lstlisting}
|
||||
((( cell.source )))
|
||||
\end{lstlisting}
|
||||
((*- endblock input -*))
|
||||
|
||||
% ok
|
||||
|
||||
%but may be this?
|
||||
|
||||
%((*- block output_prompt -*))
|
||||
% No prompt!
|
||||
%\textbf{Output \#{}(((cell.prompt_number)))}
|
||||
%((*- endblock output_prompt -*))
|
||||
|
||||
|
||||
((* block author *))
|
||||
\author{J.-F. Bercher}
|
||||
((* endblock author *))
|
||||
|
||||
((* block title *))
|
||||
\title{ }
|
||||
((* endblock title *))
|
||||
|
||||
((* block packages *))
|
||||
((( super() )))
|
||||
\usepackage{listings}
|
||||
\usepackage{float}
|
||||
((* endblock packages *))
|
||||
|
||||
%or -- both work
|
||||
((* block header *))
|
||||
((( super() )))
|
||||
%\usepackage{foo}
|
||||
((* endblock *))
|
||||
|
||||
|
||||
((* block commands *))
|
||||
% Prevent overflowing lines due to hard-to-break entities
|
||||
\sloppy
|
||||
% Setup hyperref package
|
||||
\hypersetup{
|
||||
breaklinks=true, % so long urls are correctly broken across lines
|
||||
pdftitle={\@title},
|
||||
pdfauthor={\@author},
|
||||
colorlinks=true, %colorise les liens
|
||||
breaklinks=true, %permet le retour à la ligne dans les liens trop longs
|
||||
urlcolor= blue, %couleur des hyperliens
|
||||
linkcolor= blue, %couleur des liens internes
|
||||
citecolor=blue, %couleur des liens de citations
|
||||
bookmarksopen=false,
|
||||
pdftoolbar=false,
|
||||
pdfmenubar=false,
|
||||
% hidelinks
|
||||
}
|
||||
% Slightly bigger margins than the latex defaults
|
||||
\geometry{verbose,tmargin=1in,bmargin=1in,lmargin=1in,rmargin=1in}
|
||||
%listings configuration
|
||||
|
||||
\definecolor{mygreen}{rgb}{0,0.6,0}
|
||||
\definecolor{mygray}{rgb}{0.5,0.5,0.5}
|
||||
\definecolor{mymauve}{rgb}{0.58,0,0.82}
|
||||
\lstset{
|
||||
language=Python,
|
||||
commentstyle=\color{mygreen},
|
||||
keywordstyle=\color{blue},
|
||||
stringstyle=\color{mymauve},
|
||||
xleftmargin= 1cm,
|
||||
xrightmargin= 1cm,
|
||||
showstringspaces=false,
|
||||
breaklines=true,
|
||||
texcl=false,
|
||||
% basicstyle=\ttfamily,
|
||||
frame=single,
|
||||
frameround=tttt,
|
||||
framesep=10pt,
|
||||
%framexleftmargin=10pt,
|
||||
%framexrightmargin =10pt,
|
||||
%frameshape={RYRYNYYYY}{yny}{yny}{RYRYNYYYY}
|
||||
inputencoding=utf8,
|
||||
extendedchars=true,
|
||||
literate=%
|
||||
{é}{{\'{e}}}1
|
||||
{è}{{\`{e}}}1
|
||||
{ê}{{\^{e}}}1
|
||||
{ë}{{\¨{e}}}1
|
||||
{É}{{\'{E}}}1
|
||||
{Ê}{{\^{E}}}1
|
||||
{û}{{\^{u}}}1
|
||||
{ù}{{\`{u}}}1
|
||||
{à}{{\`{a}}}1
|
||||
{ç}{{\c{c}}}1
|
||||
{Ç}{{\c{C}}}1
|
||||
{î}{{\^{i}}}1
|
||||
{Î}{{\^{I}}}1
|
||||
}
|
||||
((* endblock commands *))
|
||||
|
||||
|
||||
% Display latex
|
||||
|
||||
((* block data_latex -*))
|
||||
((*- if output.latex.startswith('$'): -*))
|
||||
((= Replace $ symbols with more explicit, equation block. =))
|
||||
\begin{equation}
|
||||
((( output.latex | strip_dollars )))
|
||||
\end{equation}
|
||||
((*- else -*))
|
||||
((( output.latex )))
|
||||
((*- endif *))
|
||||
((* endblock data_latex *))
|
||||
|
||||
|
||||
|
||||
((* block bibliography *))
|
||||
%\bibliographystyle{ieetran}
|
||||
%\bibliography{Thesis}
|
||||
((* endblock bibliography *))
|
||||
|
||||
% Draw a figure using the graphicx package.
|
||||
((* macro draw_figure(filename) -*))
|
||||
((* set filename = filename | posix_path *))
|
||||
((*- block figure scoped -*))
|
||||
\begin{center}
|
||||
\adjustimage{max size={0.6\linewidth}{0.6\paperheight}}{((( filename )))}
|
||||
\end{center}
|
||||
% { \hspace*{\fill} \\}
|
||||
((*- endblock figure -*))
|
||||
((*- endmacro *))
|
||||
|
||||
|
||||
%============================================================
|
||||
((= This line selects the cell style. =))
|
||||
%((* set cell_style = 'style_bw_python.tplx' *))
|
||||
((* set cell_style = 'style_python.tplx' *))
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user