From 1909ace1e3c295a910b539343937cdbf457b8c02 Mon Sep 17 00:00:00 2001 From: jfbercher Date: Fri, 28 Aug 2015 18:29:52 +0200 Subject: [PATCH 1/2] Update readme.md change a link : master --> 3.x --- testing/latex_envs/readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testing/latex_envs/readme.md b/testing/latex_envs/readme.md index fbc27b6..855ceb7 100644 --- a/testing/latex_envs/readme.md +++ b/testing/latex_envs/readme.md @@ -30,7 +30,7 @@ Either load the extension from your `custom.js` or use a code cell with # Demo/documentation -A demo notebook `latex_env_doc.ipynb` is provided. Its html version is [latex_env_doc.html](https://rawgit.com/jfbercher/IPython-notebook-extensions/master/testing/latex_envs/latex_env_doc.html) and a pdf resulting +A demo notebook `latex_env_doc.ipynb` is provided. Its html version is [latex_env_doc.html](https://rawgit.com/jfbercher/IPython-notebook-extensions/3.x/testing/latex_envs/latex_env_doc.html) and a pdf resulting from conversion to LaTeX is available as `documentation.pdf`. Code needs improvements. **Contributions, comments, issues are most welcome and will be deeply appreciated.** From 8d284e07489f9e20f84c38f8a7c02a01cd173090 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Fran=C3=A7ois=20Bercher?= Date: Mon, 31 Aug 2015 18:41:19 +0200 Subject: [PATCH 2/2] Removing testing/latex_envs --- .../latex_envs/conversion/documentation.pdf | Bin 177306 -> 0 bytes .../latex_envs/conversion/documentation.tex | 129 -- testing/latex_envs/conversion/example.png | Bin 3941 -> 0 bytes testing/latex_envs/conversion/header.tex | 273 --- .../latex_envs/conversion/ipynb_thms_to_html | 36 - .../latex_envs/conversion/ipynb_thms_to_latex | 34 - .../latex_envs/conversion/latex_env_doc.ipynb | 705 -------- .../latex_envs/conversion/latex_env_doc.tex | 570 ------- testing/latex_envs/conversion/latex_envs.css | 239 --- .../latex_envs/conversion/post_html_thms.js | 37 - testing/latex_envs/conversion/readme.md | 24 - .../latex_envs/conversion/texheaders_rm.py | 86 - .../latex_envs/conversion/thmInNb_tolatex.py | 57 - testing/latex_envs/conversion/thmsInNb.tpl | 75 - .../conversion/thmsInNb_article.tplx | 170 -- .../latex_envs/conversion/thmsInNb_book.tplx | 171 -- testing/latex_envs/conversion/toc_and_cln.py | 125 -- testing/latex_envs/documentation.pdf | Bin 177306 -> 0 bytes testing/latex_envs/example.png | Bin 3941 -> 0 bytes testing/latex_envs/icon.png | Bin 57045 -> 0 bytes testing/latex_envs/latex_env_doc.html | 1459 ----------------- testing/latex_envs/latex_env_doc.ipynb | 736 --------- testing/latex_envs/latex_envs.css | 239 --- testing/latex_envs/latex_envs.js | 178 -- testing/latex_envs/latex_envs.yaml | 7 - testing/latex_envs/readme.md | 51 - testing/latex_envs/thmsInNb.js | 271 --- 27 files changed, 5672 deletions(-) delete mode 100644 testing/latex_envs/conversion/documentation.pdf delete mode 100644 testing/latex_envs/conversion/documentation.tex delete mode 100644 testing/latex_envs/conversion/example.png delete mode 100644 testing/latex_envs/conversion/header.tex delete mode 100755 testing/latex_envs/conversion/ipynb_thms_to_html delete mode 100755 testing/latex_envs/conversion/ipynb_thms_to_latex delete mode 100644 testing/latex_envs/conversion/latex_env_doc.ipynb delete mode 100644 testing/latex_envs/conversion/latex_env_doc.tex delete mode 100644 testing/latex_envs/conversion/latex_envs.css delete mode 100644 testing/latex_envs/conversion/post_html_thms.js delete mode 100644 testing/latex_envs/conversion/readme.md delete mode 100644 testing/latex_envs/conversion/texheaders_rm.py delete mode 100644 testing/latex_envs/conversion/thmInNb_tolatex.py delete mode 100755 testing/latex_envs/conversion/thmsInNb.tpl delete mode 100644 testing/latex_envs/conversion/thmsInNb_article.tplx delete mode 100644 testing/latex_envs/conversion/thmsInNb_book.tplx delete mode 100644 testing/latex_envs/conversion/toc_and_cln.py delete mode 100644 testing/latex_envs/documentation.pdf delete mode 100644 testing/latex_envs/example.png delete mode 100644 testing/latex_envs/icon.png delete mode 100644 testing/latex_envs/latex_env_doc.html delete mode 100644 testing/latex_envs/latex_env_doc.ipynb delete mode 100644 testing/latex_envs/latex_envs.css delete mode 100644 testing/latex_envs/latex_envs.js delete mode 100644 testing/latex_envs/latex_envs.yaml delete mode 100644 testing/latex_envs/readme.md delete mode 100644 testing/latex_envs/thmsInNb.js diff --git a/testing/latex_envs/conversion/documentation.pdf b/testing/latex_envs/conversion/documentation.pdf deleted file mode 100644 index 6b880384f3ba4ba064bbd34e265b3c6f672ead1e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 177306 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 Ua%E-;F*h|cFgOY&B}Gq03TeGV9{>OV diff --git a/testing/latex_envs/conversion/documentation.tex b/testing/latex_envs/conversion/documentation.tex deleted file mode 100644 index 0b56264..0000000 --- a/testing/latex_envs/conversion/documentation.tex +++ /dev/null @@ -1,129 +0,0 @@ - - -\input{header.tex} - -\usepackage{amsthm} % theorems -\usepackage{lettrine} -\usepackage{lastpage} -\usepackage{url} -\usepackage{mdframed} -\usepackage[T1]{fontenc} -%\usepackage[francais]{babel} - - - -\DeclareUnicodeCharacter{00A0}{~} %get rid of "unicode char u8 not set up for use with latex" - -\makeatletter -\renewcommand{\@evenfoot}% - {\hfil \upshape Page {\thepage}/\pageref{LastPage}} -\renewcommand{\@oddfoot}{\@evenfoot} -\makeatother - -%%% Further colors and hyperref configuration -% Colors -\definecolor{webgreen}{rgb}{0,.5,0} -\definecolor{webbrown}{rgb}{.6,0,0} -\definecolor{webyellow}{rgb}{0.98,0.92,0.73} -\definecolor{webgray}{rgb}{.753,.753,.753} -\definecolor{webblue}{rgb}{0,0,.8} - - -\usepackage{hyperref} -\hypersetup{bookmarks,bookmarksnumbered,%bookmarksopen, -colorlinks,linkcolor=webbrown,filecolor=webgreen,citecolor=webgreen, -breaklinks=true, -hyperindex=true -urlcolor=webbrown,pagebackref,pdfpagemode=None,pdfstartview=Fit} -%%%---------------------------------------- -%For redefinition of quote env -\usepackage[strict]{changepage} -\usepackage{framed} - -%% for a listing environment -\usepackage{verbatim} - -\begin{document} -\title{(some) \LaTeX{} environments in Jupyter notebook } -%\begin{abstract} -%Abstract -%\end{abstract} - -\maketitle - -\thispagestyle{empty} % Removes page numbers - -% - -\definecolor{lightred}{rgb}{1,0.1,0} -\def\myeqbox#1#2{{\fcolorbox{#1}{light#1}{$\textcolor{#1}{ #2}$}}} -\def\eqbox#1#2#3#4{{\fcolorbox{#1}{#2}{$\textcolor{#3}{ #4}$}}} -% border|background|text -\def\eqboxa#1{{\boxed{#1}}} -\def\eqboxb#1{{\eqbox{green}{white}{green}{#1}}} -\def\eqboxc#1{{\eqbox{blue}{white}{blue}{#1}}} -\def\eqboxd#1{{\eqbox{blue}{lightblue}{blue}{#1}}} - -\def\textem#1{\emph{#1}} -\def\url#1{\href{#1}{#1}} - -\newtheorem{theorem}{Theorem} -\newtheorem{exercise}{Exercise} -\newtheorem{example}{Example} -\newtheorem{prop}{Property} -\newtheorem{remark}{Remark} -\newtheorem{proposition}{Proposition} -\newtheorem{property}{Property} -\newtheorem{definition}{Definition} -\newtheorem{lemma}{Lemma} -\newtheorem{problem}{Problem} - -\newenvironment{textboxa} -{ \begin{mdframed}[backgroundcolor=yellow]} -{ \end{mdframed} } - - -% ----------------------------------------------------- -% The environment for listing is defined here. It is simply derived -% from lstlisting -\definecolor{mylatexlstbkg}{rgb}{0.898,1.0,0.898} -\definecolor{mylatexlstbkg}{rgb}{0.9176,1.0,0.9176} - -\lstnewenvironment{listing} -{\lstset{language=[LaTeX]TeX, -backgroundcolor=\color{mylatexlstbkg}}} -{} - -%% ---------------------------------------------------- -% redefinition environnement quote -% from: http://www.jevon.org/wiki/Fancy_Quotation_Boxes_in_Latex -% for adjustwidth environment - -\definecolor{darkblue}{rgb}{0.0, 0.0, 0.55} -\definecolor{formalshade}{rgb}{0.95,0.95,1} - -\renewenvironment{quote}{% - \def\FrameCommand{% - \hspace{1pt}% - {\color{darkblue}\vrule width 2pt}% - {\color{formalshade}\vrule width 4pt}% - \colorbox{formalshade}% - }% - \MakeFramed{\advance\hsize-\width\FrameRestore}% - \noindent\hspace{-4.55pt}% disable indenting first paragraph - \begin{adjustwidth}{}{7pt}% - \vspace{2pt}\vspace{2pt}% -} -{% - \vspace{2pt}\end{adjustwidth}\endMakeFramed% -} -%% ------------------- - - -\tableofcontents -%\newpage - -\input{latex_env_doc.tex} - - -\end{document} diff --git a/testing/latex_envs/conversion/example.png b/testing/latex_envs/conversion/example.png deleted file mode 100644 index 2433079d57ab24d7c1b08203c59ac64d8de04ae5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3941 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 NX9qX?@?)27{0mY^J>~!a diff --git a/testing/latex_envs/conversion/header.tex b/testing/latex_envs/conversion/header.tex deleted file mode 100644 index d26b0cd..0000000 --- a/testing/latex_envs/conversion/header.tex +++ /dev/null @@ -1,273 +0,0 @@ - -% Default to the notebook output style - - -% Inherit from the specified cell style. - - - - - - -\documentclass[11pt]{article} - - - - - \usepackage{graphicx} % Used to insert images - \usepackage{adjustbox} % Used to constrain images to a maximum size - \usepackage{color} % Allow colors to be defined - \usepackage{enumerate} % Needed for markdown enumerations to work - \usepackage{geometry} % Used to adjust the document margins - \usepackage{amsmath} % Equations - \usepackage{amssymb} % Equations - \usepackage[mathletters]{ucs} % Extended unicode (utf-8) support - %\usepackage[utf8]{inputenc} % Allow utf-8 characters in the tex document - %\usepackage[utf8x]{inputenc} % Allow utf-8 characters in the tex document - \usepackage{fancyvrb} % verbatim replacement that allows latex - \usepackage{grffile} % extends the file name processing of package graphics - % to support a larger range - % The hyperref package gives us a pdf with properly built - % internal navigation ('pdf bookmarks' for the table of contents, - % internal cross-reference links, web links for URLs, etc.) - \usepackage{hyperref} - \usepackage{longtable} % longtable support required by pandoc >1.10 - \usepackage{booktabs} % table support for pandoc > 1.12.2 - -\usepackage{listings} -\usepackage{float} - - - - - \definecolor{orange}{cmyk}{0,0.4,0.8,0.2} - \definecolor{darkorange}{rgb}{.71,0.21,0.01} - \definecolor{darkgreen}{rgb}{.12,.54,.11} - \definecolor{myteal}{rgb}{.26, .44, .56} - \definecolor{gray}{gray}{0.45} - \definecolor{lightgray}{gray}{.95} - \definecolor{mediumgray}{gray}{.8} - \definecolor{inputbackground}{rgb}{.95, .95, .85} - \definecolor{outputbackground}{rgb}{.95, .95, .95} - \definecolor{traceback}{rgb}{1, .95, .95} - % ansi colors - \definecolor{red}{rgb}{.6,0,0} - \definecolor{green}{rgb}{0,.65,0} - \definecolor{brown}{rgb}{0.6,0.6,0} - \definecolor{blue}{rgb}{0,.145,.698} - \definecolor{purple}{rgb}{.698,.145,.698} - \definecolor{cyan}{rgb}{0,.698,.698} - \definecolor{lightgray}{gray}{0.5} - - % bright ansi colors - \definecolor{darkgray}{gray}{0.25} - \definecolor{lightred}{rgb}{1.0,0.39,0.28} - \definecolor{lightgreen}{rgb}{0.48,0.99,0.0} - \definecolor{lightblue}{rgb}{0.53,0.81,0.92} - \definecolor{lightpurple}{rgb}{0.87,0.63,0.87} - \definecolor{lightcyan}{rgb}{0.5,1.0,0.83} - - % commands and environments needed by pandoc snippets - % extracted from the output of `pandoc -s` - \DefineVerbatimEnvironment{Highlighting}{Verbatim}{commandchars=\\\{\}} - % Add ',fontsize=\small' for more characters per line - \newenvironment{Shaded}{}{} - \newcommand{\KeywordTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{{#1}}}} - \newcommand{\DataTypeTok}[1]{\textcolor[rgb]{0.56,0.13,0.00}{{#1}}} - \newcommand{\DecValTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{{#1}}} - \newcommand{\BaseNTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{{#1}}} - \newcommand{\FloatTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{{#1}}} - \newcommand{\CharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{{#1}}} - \newcommand{\StringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{{#1}}} - \newcommand{\CommentTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textit{{#1}}}} - \newcommand{\OtherTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{{#1}}} - \newcommand{\AlertTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{{#1}}}} - \newcommand{\FunctionTok}[1]{\textcolor[rgb]{0.02,0.16,0.49}{{#1}}} - \newcommand{\RegionMarkerTok}[1]{{#1}} - \newcommand{\ErrorTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{{#1}}}} - \newcommand{\NormalTok}[1]{{#1}} - - % Define a nice break command that doesn't care if a line doesn't already - % exist. - \def\br{\hspace*{\fill} \\* } - % Math Jax compatability definitions - \def\gt{>} - \def\lt{<} - % Document parameters - -\title{ } - - - -\author{J.-F. Bercher} - - - - % Pygments definitions - -\makeatletter -\def\PY@reset{\let\PY@it=\relax \let\PY@bf=\relax% - \let\PY@ul=\relax \let\PY@tc=\relax% - \let\PY@bc=\relax \let\PY@ff=\relax} -\def\PY@tok#1{\csname PY@tok@#1\endcsname} -\def\PY@toks#1+{\ifx\relax#1\empty\else% - \PY@tok{#1}\expandafter\PY@toks\fi} -\def\PY@do#1{\PY@bc{\PY@tc{\PY@ul{% - \PY@it{\PY@bf{\PY@ff{#1}}}}}}} -\def\PY#1#2{\PY@reset\PY@toks#1+\relax+\PY@do{#2}} - -\expandafter\def\csname PY@tok@vc\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}} -\expandafter\def\csname PY@tok@nt\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} -\expandafter\def\csname PY@tok@gt\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.27,0.87}{##1}}} -\expandafter\def\csname PY@tok@go\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.53,0.53,0.53}{##1}}} -\expandafter\def\csname PY@tok@kc\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} -\expandafter\def\csname PY@tok@nc\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,1.00}{##1}}} -\expandafter\def\csname PY@tok@kn\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} -\expandafter\def\csname PY@tok@nv\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}} -\expandafter\def\csname PY@tok@c1\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}} -\expandafter\def\csname PY@tok@sr\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.40,0.53}{##1}}} -\expandafter\def\csname PY@tok@mo\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} -\expandafter\def\csname PY@tok@se\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.73,0.40,0.13}{##1}}} -\expandafter\def\csname PY@tok@nf\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,1.00}{##1}}} -\expandafter\def\csname PY@tok@o\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} -\expandafter\def\csname PY@tok@sh\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} -\expandafter\def\csname PY@tok@k\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} -\expandafter\def\csname PY@tok@ge\endcsname{\let\PY@it=\textit} -\expandafter\def\csname PY@tok@s\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} -\expandafter\def\csname PY@tok@sc\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} -\expandafter\def\csname PY@tok@gu\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.50,0.00,0.50}{##1}}} -\expandafter\def\csname PY@tok@sb\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} -\expandafter\def\csname PY@tok@ss\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}} -\expandafter\def\csname PY@tok@mf\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} -\expandafter\def\csname PY@tok@c\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}} -\expandafter\def\csname PY@tok@il\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} -\expandafter\def\csname PY@tok@gi\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.63,0.00}{##1}}} -\expandafter\def\csname PY@tok@ne\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.82,0.25,0.23}{##1}}} -\expandafter\def\csname PY@tok@kp\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} -\expandafter\def\csname PY@tok@bp\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} -\expandafter\def\csname PY@tok@vi\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}} -\expandafter\def\csname PY@tok@ow\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.67,0.13,1.00}{##1}}} -\expandafter\def\csname PY@tok@gr\endcsname{\def\PY@tc##1{\textcolor[rgb]{1.00,0.00,0.00}{##1}}} -\expandafter\def\csname PY@tok@sx\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} -\expandafter\def\csname PY@tok@w\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.73,0.73}{##1}}} -\expandafter\def\csname PY@tok@na\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.49,0.56,0.16}{##1}}} -\expandafter\def\csname PY@tok@gh\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,0.50}{##1}}} -\expandafter\def\csname PY@tok@s2\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} -\expandafter\def\csname PY@tok@gd\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.63,0.00,0.00}{##1}}} -\expandafter\def\csname PY@tok@kt\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.69,0.00,0.25}{##1}}} -\expandafter\def\csname PY@tok@cs\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}} -\expandafter\def\csname PY@tok@gp\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,0.50}{##1}}} -\expandafter\def\csname PY@tok@cm\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}} -\expandafter\def\csname PY@tok@nb\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} -\expandafter\def\csname PY@tok@s1\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} -\expandafter\def\csname PY@tok@nd\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.67,0.13,1.00}{##1}}} -\expandafter\def\csname PY@tok@no\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.53,0.00,0.00}{##1}}} -\expandafter\def\csname PY@tok@si\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.73,0.40,0.53}{##1}}} -\expandafter\def\csname PY@tok@m\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} -\expandafter\def\csname PY@tok@kr\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} -\expandafter\def\csname PY@tok@err\endcsname{\def\PY@bc##1{\setlength{\fboxsep}{0pt}\fcolorbox[rgb]{1.00,0.00,0.00}{1,1,1}{\strut ##1}}} -\expandafter\def\csname PY@tok@ni\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.60,0.60,0.60}{##1}}} -\expandafter\def\csname PY@tok@nn\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,1.00}{##1}}} -\expandafter\def\csname PY@tok@gs\endcsname{\let\PY@bf=\textbf} -\expandafter\def\csname PY@tok@mh\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} -\expandafter\def\csname PY@tok@mi\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} -\expandafter\def\csname PY@tok@cp\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.74,0.48,0.00}{##1}}} -\expandafter\def\csname PY@tok@kd\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} -\expandafter\def\csname PY@tok@vg\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}} -\expandafter\def\csname PY@tok@sd\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} -\expandafter\def\csname PY@tok@nl\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.63,0.63,0.00}{##1}}} - -\def\PYZbs{\char`\\} -\def\PYZus{\char`\_} -\def\PYZob{\char`\{} -\def\PYZcb{\char`\}} -\def\PYZca{\char`\^} -\def\PYZam{\char`\&} -\def\PYZlt{\char`\<} -\def\PYZgt{\char`\>} -\def\PYZsh{\char`\#} -\def\PYZpc{\char`\%} -\def\PYZdl{\char`\$} -\def\PYZhy{\char`\-} -\def\PYZsq{\char`\'} -\def\PYZdq{\char`\"} -\def\PYZti{\char`\~} -% for compatibility with earlier versions -\def\PYZat{@} -\def\PYZlb{[} -\def\PYZrb{]} -\makeatother - - - - - % Prevent overflowing lines due to hard-to-break entities - \sloppy - % Setup hyperref package -% \hypersetup{ -% breaklinks=true, % so long urls are correctly broken across lines -% hidelinks -% } -%%% Further colors and hyperref configuration -% Colors -\definecolor{webgreen}{rgb}{0,.5,0} -\definecolor{webbrown}{rgb}{.6,0,0} -\definecolor{webyellow}{rgb}{0.98,0.92,0.73} -\definecolor{webgray}{rgb}{.753,.753,.753} -\definecolor{webblue}{rgb}{0,0,.8} - -\hypersetup{bookmarks,bookmarksnumbered,%bookmarksopen, -colorlinks,linkcolor=webbrown,filecolor=webgreen,citecolor=webgreen, -breaklinks=true, -hyperindex=true -urlcolor=webbrown,pagebackref,pdfpagemode=None,pdfstartview=Fit} - % 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} - -%\usepackage{xcolor} -\definecolor{mylstbkg}{rgb}{1,0.899,0.8} - - \lstset{ -language=Python, -commentstyle=\color{mygreen}, -keywordstyle=\color{blue}, -stringstyle=\color{mymauve}, -xleftmargin= 1cm, -xrightmargin= 1cm, -showstringspaces=false, - breaklines=true, - texcl=false, -% basicstyle=\ttfamily, -basicstyle=\footnotesize, -frame=none, %was single -%frameround=tttt, %was not% -framesep=10pt, -backgroundcolor=\color{mylstbkg}, -%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 -} - - -%\usepackage{foo} diff --git a/testing/latex_envs/conversion/ipynb_thms_to_html b/testing/latex_envs/conversion/ipynb_thms_to_html deleted file mode 100755 index 87fa74c..0000000 --- a/testing/latex_envs/conversion/ipynb_thms_to_html +++ /dev/null @@ -1,36 +0,0 @@ -#!/usr/bin/env bash - -#This is to convert to html the notebooks with embedded LaTex structures -#as used in the latex_envs extension -#required: nodejs, perl - -listOfFiles=$* -#from http://stackoverflow.com/questions/59895/can-a-bash-script-tell-what-directory-its-stored-in -SDIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) - -if [ ! -f ./thmsInNb.tpl ] -then - cp -n $SDIR/thmsInNb.tpl . # for conversion, the template file must be in the same directory (or in templates/html dir) - thmsInNbCopied=true -fi - - -for f in $listOfFiles -do - echo [Translating... $f ] - cp $f temp.ipynb - perl -pi -e s/'\\\\\['/'\$\$'/ temp.ipynb - perl -pi -e s/'\\\\\]'/'\$\$'/ temp.ipynb - ipython3 nbconvert --template=thmsInNb --to html temp --output temp - echo [Post Html processing] - nodejs $SDIR/post_html_thms.js < temp.html > ${f%.ipynb}.html - #echo [Updating links] - #perl -pi -e s/.ipynb/.html/g ${f%.ipynb}.html - echo Done -done -cp -n ~/.ipython/nbextensions/latex_envs.css . # copy the css file in the same directory as the html -if $thmsInNbCopied - then rm thmsInNb.tpl #cleaning -fi - - diff --git a/testing/latex_envs/conversion/ipynb_thms_to_latex b/testing/latex_envs/conversion/ipynb_thms_to_latex deleted file mode 100755 index be9cf45..0000000 --- a/testing/latex_envs/conversion/ipynb_thms_to_latex +++ /dev/null @@ -1,34 +0,0 @@ -#!/usr/bin/env bash -# example: ./ipynb_thms_to_latex Lect*.ipynb - - -listOfFiles=$* -#from http://stackoverflow.com/questions/59895/can-a-bash-script-tell-what-directory-its-stored-in -SDIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) -echo $SDIR - -cp -n $SDIR/thmsInNb_article.tplx . # for conversion, the template file must be in the same directory (or in templates/html dir) -#cp -n $SDIR/thmsInNb_book.tplx . # for conversion, the template file must be in the same directory (or in templates/html dir) -for f in $listOfFiles -do - temp=${f%.ipynb}_tmp.ipynb - cp $f $temp - # corrections in some markdown cells - perl -pi -e s/'\\\\\['/'\$\$'/ $temp - perl -pi -e s/'\\\\\]'/'\$\$'/ $temp - # convert ipynb to latex - ipython3 nbconvert --to latex --template thmsInNb_article $temp - #ipython nbconvert --to latex --template thmsInNb_book $temp - - ## postprocessing - python3 $SDIR/thmInNb_tolatex.py ${temp%.ipynb}.tex ${f%.ipynb}.tex #conversion of remaining environments - python3 $SDIR/texheaders_rm.py ${f%.ipynb}.tex #remove headers and footers (optional -- can be commented) - #python3 $SDIR/toc_and_cln.py ${f%.ipynb}.tex - # want to number everything - perl -pi -e s/'\\\['/'\\begin{equation}'/ ${f%.ipynb}.tex - perl -pi -e s/'\\\]'/'\\end{equation}'/ ${f%.ipynb}.tex -done -echo Cleaning... -rm *_tmp.* -#rm thmsInNb_article.tplx - diff --git a/testing/latex_envs/conversion/latex_env_doc.ipynb b/testing/latex_envs/conversion/latex_env_doc.ipynb deleted file mode 100644 index 9bf2fdd..0000000 --- a/testing/latex_envs/conversion/latex_env_doc.ipynb +++ /dev/null @@ -1,705 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "application/javascript": [ - "IPython.load_extensions('calico-document-tools');" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "%%javascript \n", - "IPython.load_extensions('calico-document-tools');" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "application/javascript": [ - "IPython.load_extensions('latex_envs');" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "%%javascript \n", - "IPython.load_extensions('latex_envs');" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "%%html\n", - "" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Goal" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Initial goal" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The initial goal was only to add an environment `theorem` in my workflow. That is to be able to type something like\n", - "\\begin{listing}\n", - "\\begin{theorem} \n", - "Let $u$ and $v$ be two vectors of $\\mathbb{R}^n$. The dot product can be expressed as\n", - "$$u^Tv = |u||v| \\cos \\theta,$$ \n", - "where $\\theta$ is the angle between $u$ and $v$ ...\n", - "\\end{theorem}\n", - "\\end{listing}\n", - "in a markdown cell and have it rendered, like\n", - "\n", - "\\begin{theorem}\n", - "Let $u$ and $v$ be two vectors of $\\mathbb{R}^n$. The dot product can be expressed as $$u^Tv = |u||v| \\cos \\theta,$$ where $\\theta$ is the angle between $u$ and $v$ ...\n", - "\\end{theorem}" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Features" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The initial project has evolved to account for more environments and introduce some other features." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Support for simple LaTeX commands" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We also added some LaTeX commands (e.g. `\\textit`, `\\textbf`, `\\underline`) -- this is useful in the case of copy-paste from a LaTeX document. Labels and references are supported, including for equations." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Available environments" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "- **theorems-like environments**: *property, theorem, lemma, corollary, proposition, definition,remark, problem, exercise, example*,\n", - "- **lists**: *enumerate, itemize*, \n", - "- limited support for a *figure* environment,\n", - "- an environment *listing*,\n", - "- *textboxa*, wich is a `textbox` environment defined as a demonstration (see below).\n", - "\n", - "More environments can be added easily in the javascript source file `thmsInNb.js`. The rendering is done according to the stylesheet `latex_env.css`, which can be customized." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Automatic numerotation" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Counters for numbering are implemented: one for theorems-like environments, a second for exercises-like environments and a third one for numbering figures. \n", - "Mathjax-equations with a label are also numbered document-wide (in contrast with standard notebook/mathjax numbering where the scope of numbering is limited to cells). \n", - "An anchor is created for any label which enables to links things in the document: `\\label` and `\\ref` are both supported. A limitation is that numbering is updated (incremented) each time a cell is rendered. A toolbar button is provided to reset the counters and refresh the rendering of the whole document." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Other features" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "- It is possible to mix LaTeX and markdown markup in environments \n", - "- Environments can be nested. However, this is not always perfect..." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "collapsed": true - }, - "source": [ - "# Usage and examples" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Installation" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The extension consists in two javascript scripts: `latex_envs.js`, `thmsInNb.js` together with a stylesheet `latex_envs.css`. \n", - "Follow the instructions in the [wiki](https://github.com/ipython-contrib/IPython-notebook-extensions/wiki) to install the extension. You can simply copy these files in the notebook extension directory (usually ~/.ipython/nbextensions) and load the extension in the notebook by \n", - "\n", - " %%javascript \n", - " IPython.load_extensions('latex_envs');" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## A first example" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This example shows another example of environment, featuring automatic numerotation, and the use of labels and references. Also note that standard markdown can be present in the environment and is interpreted. \n", - "*The rendering is done according to the stylesheet `latex_env.css`, which of course, can be tailored to specific uses and tastes*. " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\\begin{listing}\n", - "\\begin{definition} \\label{def:FT}\n", - "Let $x[n]$ be a sequence of length $N$. Then, its **Fourier transform** is given by\n", - "\\begin{equation}\n", - "\\label{eq:FT}\n", - "X[k]= \\frac{1}{N} \\sum_{n=0}^{N-1} x[n] e^{-j2\\pi \\frac{kn}{N}}\n", - "\\end{equation}\n", - "\\end{definition}\n", - "\\end{listing}\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "\\begin{definition} \\label{def:FT}\n", - "Let $x[n]$ be a sequence of length $N$. Then, its **Fourier transform** is given by\n", - "\\begin{equation}\n", - "\\label{eq:FT2}\n", - "X[k]= \\frac{1}{N} \\sum_{n=0}^{N-1} x[n] e^{-j2\\pi \\frac{kn}{N}}\n", - "\\end{equation}\n", - "\\end{definition}" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This is an extremely important tool in signal processing. We put this in evidence using the `textboxa` environment -- which is defined here in the css, and that one should define in the LaTeX counterpart:\n", - "\\begin{listing}\n", - "\\begin{textboxa}\n", - "The Fourier transform is an extremely useful tool to have in your toolbox!\n", - "\\end{textboxa}\n", - "\\end{listing}" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\\begin{textboxa}\n", - "The Fourier transform is an extremely useful tool to have in your toolbox!\n", - "\\end{textboxa}\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "As an example, consider the Fourier transform (\\ref{eq:FT2}) of a pure cosine wave given by\n", - "$$\n", - "x[n]= \\cos(2\\pi k_0 n/N),\n", - "$$\n", - "where $k_0$ is an integer. Its Fourier transform is given by \n", - "$$\n", - "X[k] = \\frac{1}{2} \\left( \\delta[k-k_0] + \\delta[k-k_0] \\right), \n", - "$$\n", - "modulo $N$. This is illustrated in the following simple script:" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "%matplotlib inline\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt \n", - "from numpy.fft import fft\n", - "k0=4; N=128; n=np.arange(N); k=np.arange(N)\n", - "x=np.sin(2*np.pi*k0*n/N)\n", - "X=fft(x)\n", - "plt.stem(k,np.abs(X))\n", - "plt.xlim([0, 20])\n", - "plt.title(\"Fourier transform of a cosine\")\n", - "_=plt.xlabel(\"Frequency index (k)\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Second example" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This example shows a series of environments, with different facets; **links, references, markdown or/and LaTeX formatting within environments**. Again, the rendering is done according to the stylesheet `latex_env.css`, which can be tailored. The listing of environments below is typed using the environment *listing*..." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\\begin{listing}\n", - "\\begin{definition} \\label{def:diffeq}\n", - "We call \\textbf{difference equation} an equation of the form\n", - "$$\n", - "\\label{eq:diffeq}\n", - "y[n]= \\sum_{k=1}^{p} a_k y[n-k] + \\sum_{i=0}^q b_i x[n-i]\n", - "$$\n", - "\\end{definition}\n", - "\n", - "\\begin{property}\n", - "If all the $a_k$ in equation (\\ref{eq:diffeq}) of definition \\ref{def:diffeq} are zero, then the filter has a **finite impulse response**. \n", - "\\end{property}\n", - "\n", - "\\begin{proof}\n", - "Let $\\delta[n]$ denote the Dirac impulse. Take $x[n]=\\delta[n]$ in (\\ref{eq:diffeq}). This yields, by definition, the impulse response:\n", - "$$\n", - "\\label{eq:fir}\n", - "h[n]= \\sum_{i=0}^q b_i \\delta[n-i],\n", - "$$\n", - "which has finite support. \n", - "\\end{proof}\n", - "\n", - "\\begin{theorem}\n", - "The poles of a causal stable filter are located within the unit circle in the complex plane.\n", - "\\end{theorem}\n", - "\n", - "\\begin{example} \\label{ex:IIR1}\n", - "Consider $y[n]= a y[n-1] + x[n]$. The pole of the transfer function is $z=a$. The impulse response $h[n]=a^n$ has infinite support.\n", - "\\end{example}\n", - "\n", - "In the following exercise, you will check that the filter is stable iff $a$<1.\n", - "\n", - "\\begin{exercise}\\label{ex:exofilter}\n", - "Consider the filter defined in Example \\ref{ex:IIR1}. Using the **function** `lfilter` of scipy, compute and plot the impulse response for several values of $a$.\n", - "\\end{exercise}\n", - "\n", - "\\end{listing}\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The lines above are rendered as follows (of course everything can be tailored in the stylesheet):\n", - "\n", - "\\begin{definition} \\label{def:diffeq}\n", - "We call \\textbf{difference equation} an equation of the form\n", - "\\begin{equation}\n", - "\\label{eq:diffeq}\n", - "y[n]= \\sum_{k=1}^{p} a_k y[n-k] + \\sum_{i=0}^q b_i x[n-i]\n", - "\\end{equation}\n", - "\\end{definition}\n", - "Properties of the filter are linked to the coefficients of the difference equation. For instance, an immediate property is \n", - "\n", - "\\begin{property}\n", - "If all the $a_k$ in equation (\\ref{eq:diffeq}) of definition \\ref{def:diffeq} are zero, then the filter has a **finite impulse response**. \n", - "\\end{property}\n", - "\n", - "\\begin{proof}\n", - "Let $\\delta[n]$ denote the Dirac impulse. Take $x[n]=\\delta[n]$ in (\\ref{eq:diffeq}). This yields, by definition, the impulse response:\n", - "\\begin{equation}\n", - "\\label{eq:fir}\n", - "h[n]= \\sum_{i=0}^q b_i \\delta[n-i],\n", - "\\end{equation}\n", - "which has finite support. \n", - "\\end{proof}\n", - "\n", - "\n", - "\\begin{theorem}\n", - "The poles of a causal stable filter are located within the unit circle in the complex plane.\n", - "\\end{theorem}\n", - "\n", - "\n", - "\\begin{example} \\label{ex:IIR1}\n", - "Consider $y[n]= a y[n-1] + x[n]$. The pole of the transfer function is $z=a$. The impulse response $h[n]=a^n$ has infinite support.\n", - "\\end{example}\n", - "\n", - "In the following exercise, you will check that the filter is stable iff $a$<1.\n", - "\n", - "\\begin{exercise}\\label{ex:exofilter}\n", - "Consider the filter defined in Example \\ref{ex:IIR1}. Using the **function** `lfilter` of scipy, compute and plot the impulse response for several values of $a$.\n", - "\\end{exercise}\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\\begin{listing}\n", - "The solution of exercise \\ref{ex:exofilter}, which uses a difference equation as in Definition \\ref{def:diffeq}:\n", - "\\end{listing}\n", - "The solution of exercise \\ref{ex:exofilter}, which uses a difference equation as in Definition \\ref{def:diffeq}:" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "%matplotlib inline\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt \n", - "from scipy.signal import lfilter\n", - "d=np.zeros(100); d[0]=1 #dirac impulse\n", - "alist=[0.2, 0.8, 0.9, 0.95, 0.99, 0.999, 1.001, 1.01]\n", - "for a in alist:\n", - " h=lfilter([1], [1, -a],d)\n", - " _=plt.plot(h, label=\"a={}\".format(a))\n", - "plt.ylim([0,1.5])\n", - "plt.xlabel('Time')\n", - "_=plt.legend()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Finally, it is sometimes useful to integrate a figure within a markdown cell. The standard markdown markup for that is `![link](image)`, but a limitation is that the image can not be resized, can not be referenced and is not numbered. Furthermore it can be useful to re-use existing code. Threfore we have added a limited support for the `figure` environment. This enables to do something like\n", - "\\begin{listing}\n", - "\\begin{figure}[H]\n", - "\\centerline{\\includegraphics[width=10cm]{example.png}}\n", - "\\caption{\\label{fig:example} This is an example of figure included using LaTeX commands.}\n", - "\\end{figure}\n", - "\\end{listing}\n", - "which renders as\n", - "\\begin{figure}[H]\n", - "\\centerline{\\includegraphics[width=10cm]{example.png}}\n", - "\\caption{\\label{fig:example} This is an example of figure included using LaTeX commands.}\n", - "\\end{figure}\n", - "Of course, this Figure can now be referenced: \n", - "\\begin{listing}\n", - "Figure \\ref{fig:example} shows a second filter with input $X_2$, output $Y_2$ and an impulse response denoted as $h_2(n)$\n", - "\\end{listing}\n", - "Figure \\ref{fig:example} shows a second filter with input $X_2$, output $Y_2$ and an impulse response denoted as $h_2(n)$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Third example:" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This example shows that environments like itemize or enumerate are also available. As already indicated, this is useful for copying text from a TeX file. Following the same idea, text formating commands `\\textit`, `\\textbf`, `\\underline`, etc are also available." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\\begin{listing}\n", - "The following \\textit{environments} are available:\n", - "\\begin{itemize}\n", - " \\item \\textbf{Theorems and likes}\n", - " \\begin{enumerate}\n", - " \\item theorem,\n", - " \\item lemma,\n", - " \\item corollary\n", - " \\item ...\n", - " \\end{enumerate}\n", - " \\item \\textbf{exercises}\n", - " \\begin{enumerate}\n", - " \\item problem,\n", - " \\item example,\n", - " \\item exercise\n", - " \\end{enumerate}\n", - "\\end{itemize}\n", - "\\end{listing}" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "which gives... \n", - "\n", - "The following \\textit{environments} are available:\n", - "\\begin{itemize}\n", - "\\item \\textbf{Theorems and likes}\n", - "\\begin{enumerate}\n", - "\\item theorem,\n", - "\\item lemma,\n", - "\\item corollary\n", - "\\item ...\n", - "\\end{enumerate}\n", - "\\item \\textbf{exercises}\n", - "\\begin{enumerate}\n", - "\\item problem,\n", - "\\item example,\n", - "\\item exercise\n", - "\\end{enumerate}\n", - "\\end{itemize}" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# (post)-Converters" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The extension works in the live-notebook. Since it relies on a bunch of javascript, the notebook does not render as is in very nice services such as `nbviewer` or `github` viewer. Similarly, `nbconvert` does not know of the LaTeX constructs which are used and therefore do not fully convert notebooks making use of this extension. Therefore, it is necessary to add a post conversion step to conversions provided by `nbconvert`. Though an interface exists for adding post-converters to nbconvert, this (first) author was too lazy and not enough strong to implement the post conversion along these lines. What has be done are simple `bash` and `python` scripts that perform this conversion." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Installation" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Copy the scripts files to a directory in your search path, or launch the scripts with the complete path. The two main scripts are `ipynb_thms_to_html` (conversion to html, of course:) and `ipynb_thms_to_latex` (conversion to LaTeX!)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Conversion to html" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Requirements**: You will need `perl`, `nodejs`, and `ipython3` (the script calls `ipython3`; if your interpreter is `ipython`, edit the script and replace the different occurences).\n", - "\n", - "The conversion to html is done by something like \n", - "\n", - " [path/]ipynb_thms_to_html filename\n", - "or a list of files such as\n", - "\n", - " [path/]ipynb_thms_to_html *.ipynb\n", - "In turn, this script makes somes substitutions using `perl`, and then uses the `nodesj` javascript interpreter to make the very same substitutions that are done in the live notebook.\n", - "The conversion uses the template `thmsInNb.tpl` (located in the script directory). It also copies the css `latex_env.css` in the directory of the output html file (it must be copied with html files in the case of web upload)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Conversion to LaTeX" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Requirements**: You will need `perl` and `ipython3`. \n", - "\n", - "The conversion to LaTeX is done by something like \n", - "\n", - " [path/]ipynb_thms_to_latex filename\n", - "or a list of files such as\n", - "\n", - " [path/]ipynb_thms_to_latex *.ipynb\n", - " \n", - "The script makes some substitutions and cleaning in arkdown cells, then calls the legacy `nbconvert`. Afterward, it runs through the LaTeX environments and converts their contents (which can contain markdown markup) to LaTeX. Note that the script contains a list of the LaTeX environments to process. In the case of the addition of an environment in the main javascript (`thmsInNb.js`), this list must also be updated. \n", - "\n", - "Finally, the script removes the header and footer in the LaTeX file. This is a personnal choice, and the corresponding line can be safely commented. \n", - "\n", - "\\begin{example}\n", - "As for an example, the present document has been converted using\n", - " \n", - " ipynb_thms_to_latex latex_env_doc.ipynb\n", - " \n", - "Then the resulting file (without header/footer) has been included in the main file `documentation.tex`, where some LaTeX definitions of environments are done (namely listings, colors, etc) and compiled using \n", - " \n", - " xelatex documentation\n", - " \n", - "The output can be consulted [here](documentation.pdf). \n", - "\\end{example}" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Disclaimer, sources and thanks" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This is a not-quick but certainly dirty hack. I am a complete beginner in javascript and of course there are obviously a large amount of possible improvements of the code, in cleaning, factorizing, etc! Language also needs improvement. \n", - "\n", - "**Contributions will be welcome and deeply appreciated.** \n", - "\n", - "Originally, I used a piece of code from the nice online markdown editor `stackedit` [https://github.com/benweet/stackedit/issues/187](https://github.com/benweet/stackedit/issues/187), where the authors also considered the problem of incorporating LaTeX markup in their markdown. I also used examples and code from [https://github.com/ipython-contrib/IPython-notebook-extensions](https://github.com/ipython-contrib/IPython-notebook-extensions). \n" - ] - }, - { - "cell_type": "code", - "execution_count": 101, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "application/javascript": [ - "IPython.load_extensions('latex_envs');" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "%%javascript \n", - "IPython.load_extensions('latex_envs');" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.4.3+" - } - }, - "nbformat": 4, - "nbformat_minor": 0 -} diff --git a/testing/latex_envs/conversion/latex_env_doc.tex b/testing/latex_envs/conversion/latex_env_doc.tex deleted file mode 100644 index 40cddae..0000000 --- a/testing/latex_envs/conversion/latex_env_doc.tex +++ /dev/null @@ -1,570 +0,0 @@ - - - - - - -%~\par -%\newpage - - - - % No prompt! -%\textbf{Input \#{}}% -\begin{lstlisting} -%%javascript -IPython.load_extensions('calico-document-tools'); -\end{lstlisting}% No prompt! -%\textbf{Output \#{}} -% - - \begin{verbatim} - - \end{verbatim} - - % No prompt! -%\textbf{Input \#{}}% -\begin{lstlisting} -%%javascript -IPython.load_extensions('latex_envs'); -\end{lstlisting}% No prompt! -%\textbf{Output \#{}} -% - - \begin{verbatim} - - \end{verbatim} - - % No prompt! -%\textbf{Input \#{}}% -\begin{lstlisting} -%%html - -\end{lstlisting} - \section{Goal}\label{goal} - - \subsection{Initial goal}\label{initial-goal} - - The initial goal was only to add an environment \texttt{theorem} in my -workflow. That is to be able to type something like - -\begin{listing} -\begin{theorem} -Let $u$ and $v$ be two vectors of $\mathbb{R}^n$. The dot product can be -expressed as \begin{equation}u^Tv = |u||v| \cos \theta,\end{equation} where $\theta$ is the angle -between $u$ and $v$ \ldots{} -\end{theorem} -\end{listing} - -in a markdown cell and have it rendered, like - -\begin{theorem} -Let $u$ and $v$ be two vectors of $\mathbb{R}^n$. The dot product can be -expressed as \begin{equation}u^Tv = |u||v| \cos \theta,\end{equation} where $\theta$ is the angle -between $u$ and $v$ \ldots{} -\end{theorem} - - \subsection{Features}\label{features} - - The initial project has evolved to account for more environments and -introduce some other features. - - \subsubsection{Support for simple LaTeX -commands}\label{support-for-simple-latex-commands} - - We also added some LaTeX commands (e.g. \texttt{\textbackslash{}textit}, -\texttt{\textbackslash{}textbf}, \texttt{\textbackslash{}underline}) -- -this is useful in the case of copy-paste from a LaTeX document. Labels -and references are supported, including for equations. - - \subsubsection{Available environments}\label{available-environments} - - \begin{itemize} -\itemsep1pt\parskip0pt\parsep0pt -\item - \textbf{theorems-like environments}: \emph{property, theorem, lemma, - corollary, proposition, definition,remark, problem, exercise, - example}, -\item - \textbf{lists}: \emph{enumerate, itemize},\\ -\item - limited support for a \emph{figure} environment, -\item - an environment \emph{listing}, -\item - \emph{textboxa}, wich is a \texttt{textbox} environment defined as a - demonstration (see below). -\end{itemize} - -More environments can be added easily in the javascript source file -\texttt{thmsInNb.js}. The rendering is done according to the stylesheet -\texttt{latex\_env.css}, which can be customized. - - \subsubsection{Automatic numerotation}\label{automatic-numerotation} - - Counters for numbering are implemented: one for theorems-like -environments, a second for exercises-like environments and a third one -for numbering figures.\\Mathjax-equations with a label are also numbered -document-wide (in contrast with standard notebook/mathjax numbering -where the scope of numbering is limited to cells). An anchor is created -for any label which enables to links things in the document: -\texttt{\textbackslash{}label} and \texttt{\textbackslash{}ref} are both -supported. A limitation is that numbering is updated (incremented) each -time a cell is rendered. A toolbar button is provided to reset the -counters and refresh the rendering of the whole document. - - \subsubsection{Other features}\label{other-features} - - \begin{itemize} -\itemsep1pt\parskip0pt\parsep0pt -\item - It is possible to mix LaTeX and markdown markup in environments\\ -\item - Environments can be nested. However, this is not always - perfect\ldots{} -\end{itemize} - - \section{Usage and examples}\label{usage-and-examples} - - \subsection{Installation}\label{installation} - - The extension consists in two javascript scripts: -\texttt{latex\_envs.js}, \texttt{thmsInNb.js} together with a stylesheet -\texttt{latex\_envs.css}. Follow the instructions in the -\href{https://github.com/ipython-contrib/IPython-notebook-extensions/wiki}{wiki} -to install the extension. You can simply copy these files in the -notebook extension directory (usually -\textasciitilde{}/.ipython/nbextensions) and load the extension in the -notebook by - -\begin{verbatim} -%%javascript -IPython.load_extensions('latex_envs'); -\end{verbatim} - - \subsection{A first example}\label{a-first-example} - - This example shows another example of environment, featuring automatic -numerotation, and the use of labels and references. Also note that -standard markdown can be present in the environment and is interpreted. -\emph{The rendering is done according to the stylesheet -\texttt{latex\_env.css}, which of course, can be tailored to specific -uses and tastes}. - - \begin{listing} -\begin{definition} -\label{def:FT} Let $x[n]$ be a sequence of length $N$. Then, its -\textbf{Fourier transform} is given by - -\begin{equation} -\label{eq:FT} -X[k]= \frac{1}{N} \sum_{n=0}^{N-1} x[n] e^{-j2\pi \frac{kn}{N}} -\end{equation} -\end{definition} -\end{listing} - - \begin{definition} -\label{def:FT} Let $x[n]$ be a sequence of length $N$. Then, its -\textbf{Fourier transform} is given by - -\begin{equation} -\label{eq:FT2} -X[k]= \frac{1}{N} \sum_{n=0}^{N-1} x[n] e^{-j2\pi \frac{kn}{N}} -\end{equation} -\end{definition} - - This is an extremely important tool in signal processing. We put this in -evidence using the \texttt{textboxa} environment -- which is defined -here in the css, and that one should define in the LaTeX counterpart: - -\begin{listing} -\begin{textboxa} -The Fourier transform is an extremely useful tool to have in your toolbox! -\end{textboxa} -\end{listing} - - \begin{textboxa} -The Fourier transform is an extremely useful tool to have in your toolbox! -\end{textboxa} - - As an example, consider the Fourier transform (\ref{eq:FT2}) of a pure -cosine wave given by \begin{equation} -x[n]= \cos(2\pi k_0 n/N), -\end{equation} where $k_0$ is an integer. Its Fourier transform is given by \begin{equation} -X[k] = \frac{1}{2} \left( \delta[k-k_0] + \delta[k-k_0] \right), -\end{equation} modulo $N$. This is illustrated in the following simple script: -% No prompt! -%\textbf{Input \#{}}% -\begin{lstlisting} -%matplotlib inline -import numpy as np -import matplotlib.pyplot as plt -from numpy.fft import fft -k0=4; N=128; n=np.arange(N); k=np.arange(N) -x=np.sin(2*np.pi*k0*n/N) -X=fft(x) -plt.stem(k,np.abs(X)) -plt.xlim([0, 20]) -plt.title("Fourier transform of a cosine") -_=plt.xlabel("Frequency index (k)") -\end{lstlisting}% No prompt! -%\textbf{Output \#{}} -% - \begin{center} - \adjustimage{max size={0.6\linewidth}{0.6\paperheight}}{latex_env_doc_tmp_files/latex_env_doc_tmp_26_0.png} - \end{center} -% { \hspace*{\fill} \\} - - \subsection{Second example}\label{second-example} - - This example shows a series of environments, with different facets; -\textbf{links, references, markdown or/and LaTeX formatting within -environments}. Again, the rendering is done according to the stylesheet -\texttt{latex\_env.css}, which can be tailored. The listing of -environments below is typed using the environment \emph{listing}\ldots{} - - \begin{listing} -\begin{definition} -\label{def:diffeq} We call \textbf{difference equation} an equation of -the form \begin{equation} -\label{eq:diffeq} -y[n]= \sum_{k=1}^{p} a_k y[n-k] + \sum_{i=0}^q b_i x[n-i] -\end{equation} -\end{definition} - -\begin{property} -If all the $a_k$ in equation (\ref{eq:diffeq}) of definition -\ref{def:diffeq} are zero, then the filter has a \textbf{finite impulse -response}. -\end{property} - -\begin{proof} -Let $\delta[n]$ denote the Dirac impulse. Take $x[n]=\delta[n]$ in -(\ref{eq:diffeq}). This yields, by definition, the impulse response: \begin{equation} -\label{eq:fir} -h[n]= \sum_{i=0}^q b_i \delta[n-i], -\end{equation} which has finite support. -\end{proof} - -\begin{theorem} -The poles of a causal stable filter are located within the unit circle -in the complex plane. -\end{theorem} - -\begin{example} -\label{ex:IIR1} Consider $y[n]= a y[n-1] + x[n]$. The pole of the -transfer function is $z=a$. The impulse response $h[n]=a^n$ has infinite -support. -\end{example} - -In the following exercise, you will check that the filter is stable iff $a$<1. - -\begin{exercise} -\label{ex:exofilter} Consider the filter defined in Example -\ref{ex:IIR1}. Using the \textbf{function} \texttt{lfilter} of scipy, -compute and plot the impulse response for several values of $a$. -\end{exercise} - -\end{listing} - - The lines above are rendered as follows (of course everything can be -tailored in the stylesheet): - -\begin{definition} -\label{def:diffeq} We call \textbf{difference equation} an equation of -the form - -\begin{equation} -\label{eq:diffeq} -y[n]= \sum_{k=1}^{p} a_k y[n-k] + \sum_{i=0}^q b_i x[n-i] -\end{equation} -\end{definition} - -Properties of the filter are linked to the coefficients of the -difference equation. For instance, an immediate property is - -\begin{property} -If all the $a_k$ in equation (\ref{eq:diffeq}) of definition -\ref{def:diffeq} are zero, then the filter has a \textbf{finite impulse -response}. -\end{property} - -\begin{proof} -Let $\delta[n]$ denote the Dirac impulse. Take $x[n]=\delta[n]$ in -(\ref{eq:diffeq}). This yields, by definition, the impulse response: - -\begin{equation} -\label{eq:fir} -h[n]= \sum_{i=0}^q b_i \delta[n-i], -\end{equation} - -which has finite support. -\end{proof} - -\begin{theorem} -The poles of a causal stable filter are located within the unit circle -in the complex plane. -\end{theorem} - -\begin{example} -\label{ex:IIR1} Consider $y[n]= a y[n-1] + x[n]$. The pole of the -transfer function is $z=a$. The impulse response $h[n]=a^n$ has infinite -support. -\end{example} - -In the following exercise, you will check that the filter is stable iff -$a$\textless{}1. - -\begin{exercise} -\label{ex:exofilter} Consider the filter defined in Example -\ref{ex:IIR1}. Using the \textbf{function} \texttt{lfilter} of scipy, -compute and plot the impulse response for several values of $a$. -\end{exercise} - - \begin{listing} -The solution of exercise \ref{ex:exofilter}, which uses a difference equation as in Definition \ref{def:diffeq}: -\end{listing} - -The solution of exercise \ref{ex:exofilter}, which uses a difference -equation as in Definition \ref{def:diffeq}: -% No prompt! -%\textbf{Input \#{}}% -\begin{lstlisting} -%matplotlib inline -import numpy as np -import matplotlib.pyplot as plt -from scipy.signal import lfilter -d=np.zeros(100); d[0]=1 #dirac impulse -alist=[0.2, 0.8, 0.9, 0.95, 0.99, 0.999, 1.001, 1.01] -for a in alist: - h=lfilter([1], [1, -a],d) - _=plt.plot(h, label="a={}".format(a)) -plt.ylim([0,1.5]) -plt.xlabel('Time') -_=plt.legend() -\end{lstlisting}% No prompt! -%\textbf{Output \#{}} -% - \begin{center} - \adjustimage{max size={0.6\linewidth}{0.6\paperheight}}{latex_env_doc_tmp_files/latex_env_doc_tmp_32_0.png} - \end{center} -% { \hspace*{\fill} \\} - - Finally, it is sometimes useful to integrate a figure within a markdown -cell. The standard markdown markup for that is -\texttt{!{[}link{]}(image)}, but a limitation is that the image can not -be resized, can not be referenced and is not numbered. Furthermore it -can be useful to re-use existing code. Threfore we have added a limited -support for the \texttt{figure} environment. This enables to do -something like - -\begin{listing} -\begin{figure}[H] -\centerline{\includegraphics[width=10cm]{example.png}} -\caption{\label{fig:example} This is an example of figure included using LaTeX commands.} -\end{figure} -\end{listing} - -which renders as - -\begin{figure}[H] -\centerline{\includegraphics[width=10cm]{example.png}} -\caption{\label{fig:example} This is an example of figure included using LaTeX commands.} -\end{figure} - -Of course, this Figure can now be referenced: - -\begin{listing} -Figure \ref{fig:example} shows a second filter with input $X_2$, output $Y_2$ and an impulse response denoted as $h_2(n)$ -\end{listing} - -Figure \ref{fig:example} shows a second filter with input $X_2$, output -$Y_2$ and an impulse response denoted as $h_2(n)$ - - \subsection{Third example:}\label{third-example} - - This example shows that environments like itemize or enumerate are also -available. As already indicated, this is useful for copying text from a -TeX file. Following the same idea, text formating commands -\texttt{\textbackslash{}textit}, \texttt{\textbackslash{}textbf}, -\texttt{\textbackslash{}underline}, etc are also available. - - \begin{listing} -The following \textit{environments} are available: -\begin{itemize} - \item \textbf{Theorems and likes} - \begin{enumerate} - \item theorem, - \item lemma, - \item corollary - \item ... - \end{enumerate} - \item \textbf{exercises} - \begin{enumerate} - \item problem, - \item example, - \item exercise - \end{enumerate} -\end{itemize} -\end{listing} - - which gives\ldots{} - -The following \textit{environments} are available: - -\begin{itemize} -\item \textbf{Theorems and likes} -\begin{enumerate} -\item theorem, -\item lemma, -\item corollary -\item ... -\end{enumerate} -\item \textbf{exercises} -\begin{enumerate} -\item problem, -\item example, -\item exercise -\end{enumerate} -\end{itemize} - - \section{(post)-Converters}\label{post-converters} - - The extension works in the live-notebook. Since it relies on a bunch of -javascript, the notebook does not render as is in very nice services -such as \texttt{nbviewer} or \texttt{github} viewer. Similarly, -\texttt{nbconvert} does not know of the LaTeX constructs which are used -and therefore do not fully convert notebooks making use of this -extension. Therefore, it is necessary to add a post conversion step to -conversions provided by \texttt{nbconvert}. Though an interface exists -for adding post-converters to nbconvert, this (first) author was too -lazy and not enough strong to implement the post conversion along these -lines. What has be done are simple \texttt{bash} and \texttt{python} -scripts that perform this conversion. - - \subsection{Installation}\label{installation} - - Copy the scripts files to a directory in your search path, or launch the -scripts with the complete path. The two main scripts are -\texttt{ipynb\_thms\_to\_html} (conversion to html, of course:) and -\texttt{ipynb\_thms\_to\_latex} (conversion to LaTeX!). - - \subsection{Conversion to html}\label{conversion-to-html} - - \textbf{Requirements}: You will need \texttt{perl}, \texttt{nodejs}, and -\texttt{ipython3} (the script calls \texttt{ipython3}; if your -interpreter is \texttt{ipython}, edit the script and replace the -different occurences). - -The conversion to html is done by something like - -\begin{verbatim} - [path/]ipynb_thms_to_html filename -\end{verbatim} - -or a list of files such as - -\begin{verbatim} - [path/]ipynb_thms_to_html *.ipynb -\end{verbatim} - -In turn, this script makes somes substitutions using \texttt{perl}, and -then uses the \texttt{nodesj} javascript interpreter to make the very -same substitutions that are done in the live notebook. The conversion -uses the template \texttt{thmsInNb.tpl} (located in the script -directory). It also copies the css \texttt{latex\_env.css} in the -directory of the output html file (it must be copied with html files in -the case of web upload). - - \subsection{Conversion to LaTeX}\label{conversion-to-latex} - - \textbf{Requirements}: You will need \texttt{perl} and -\texttt{ipython3}. - -The conversion to LaTeX is done by something like - -\begin{verbatim} - [path/]ipynb_thms_to_latex filename -\end{verbatim} - -or a list of files such as - -\begin{verbatim} - [path/]ipynb_thms_to_latex *.ipynb - -\end{verbatim} - -The script makes some substitutions and cleaning in arkdown cells, then -calls the legacy \texttt{nbconvert}. Afterward, it runs through the -LaTeX environments and converts their contents (which can contain -markdown markup) to LaTeX. Note that the script contains a list of the -LaTeX environments to process. In the case of the addition of an -environment in the main javascript (\texttt{thmsInNb.js}), this list -must also be updated. - -Finally, the script removes the header and footer in the LaTeX file. -This is a personnal choice, and the corresponding line can be safely -commented. - -\begin{example} -As for an example, the present document has been converted using - -\begin{verbatim} -ipynb_thms_to_latex latex_env_doc.ipynb -\end{verbatim} - -Then the resulting file (without header/footer) has been included in the -main file \texttt{documentation.tex}, where some LaTeX definitions of -environments are done (namely listings, colors, etc) and compiled using - -\begin{verbatim} -xelatex documentation -\end{verbatim} - -The output can be consulted \href{documentation.pdf}{here}. -\end{example} - - \section{Disclaimer, sources and -thanks}\label{disclaimer-sources-and-thanks} - - This is a not-quick but certainly dirty hack. I am a complete beginner -in javascript and of course there are obviously a large amount of -possible improvements of the code, in cleaning, factorizing, etc! -Language also needs improvement. - -\textbf{Contributions will be welcome and deeply appreciated.} - -Originally, I used a piece of code from the nice online markdown editor -\texttt{stackedit} -\url{https://github.com/benweet/stackedit/issues/187}, where the authors -also considered the problem of incorporating LaTeX markup in their -markdown. I also used examples and code from -\url{https://github.com/ipython-contrib/IPython-notebook-extensions}. -% No prompt! -%\textbf{Input \#{}}% -\begin{lstlisting} -%%javascript -IPython.load_extensions('latex_envs'); -\end{lstlisting}% No prompt! -%\textbf{Output \#{}} -% - - \begin{verbatim} - - \end{verbatim} - - - - % Add a bibliography block to the postdoc - - -%\bibliographystyle{ieetran} -%\bibliography{Thesis} - - - \ No newline at end of file diff --git a/testing/latex_envs/conversion/latex_envs.css b/testing/latex_envs/conversion/latex_envs.css deleted file mode 100644 index ffa7e4e..0000000 --- a/testing/latex_envs/conversion/latex_envs.css +++ /dev/null @@ -1,239 +0,0 @@ - /* - - - - -*/ - - -/***************************************************************** -LaTeX things -*****************************************************************/ - - .latex_tmp {text-align: justify;} - - .latex_prob, - .latex_examp, - .latex_excs, - .latex_problem, - .latex_example, - .latex_exercise, - .latex_proof { - font-style: normal; - text-align: justify; - margin-left: 0px; - margin-right: 10px; - margin-top: 0px; - margin-bottom: 15px; - background-color: #CCFFCC; - display: block; - } - - .latex_title { - float: left; - font-weight: bold; - padding-right: 10px; - } - - .latex_proofend { - float: right; - } - - .latex_listing { - display: block; - text-align: justify; - margin-right: 30px; - font-family: 'Lucida Sans Typewriter'; - color:black; - background-color: GhostWhite ; - } - - .rendered_html pre, .rendered_html code { - border: 0; - background-color: rgba(161, 139, 139, 0); - /* color: #000; */ - font-size: 100%; - padding: 0; - } - - - .latex_thm, .latex_theorem, .latex_lem, .latex_cor, .latex_defn, .latex_prop, .latex_rem, .latex_property, - .latex_lemma, .latex_corollary, .latex_definition, .latex_proposition, .latex_remark, .latex_proof { - - display: block; - text-align: justify; - margin-right: 10px; - margin-left: 0px; - margin-top: 0px; - margin-bottom: 15px; - font-style: italic; - color:black; - background-color: beige; - } - - .latex_textboxa { - display: block; - font-weight: bold; - text-align: center; - width: 80%; - margin: auto; - border: 2px solid; - padding-top: 5px; - padding-bottom: 5px; - background-color: #f2dede; - border-color: #eed3d7; - color: #CC0099; - border-radius: 8px; - -webkit-border-radius: 8px; - -moz-border-radius: 8px; - border-radius: 8px - } - - img.latex_img { - display: block; - margin: auto; - /*height: XXXpx; /* */ - width: 75%; - } - - p.latex_img { - display: block; - width: 85%; - margin: auto; - text-align: justify; - } - -/***************************************************************** -GENERAL CONFIG -*****************************************************************/ - - - @font-face { - font-family: "Computer Modern"; - src: url('http://9dbb143991406a7c655e-aa5fcb0a5a4ec34cff238a2d56ca4144.r56.cf5.rackcdn.com/cmunss.otf'); - } - - @font-face { - font-family: "Computer Modern"; - font-weight: bold; - src: url('http://9dbb143991406a7c655e-aa5fcb0a5a4ec34cff238a2d56ca4144.r56.cf5.rackcdn.com/cmunsx.otf'); - } - @font-face { - font-family: "Computer Modern"; - font-style: oblique; - src: url('http://9dbb143991406a7c655e-aa5fcb0a5a4ec34cff238a2d56ca4144.r56.cf5.rackcdn.com/cmunsi.otf'); - } -*/ - /* @font-face { - font-family: "Computer Modern"; - font-style: Typewriter; - src: url('http://mirrors.ctan.org/fonts/cm-unicode/fonts/otf/cmuntt.otf'); - }*/ - - @font-face { - font-family: "Computer Modern"; - font-weight: bold; - font-style: oblique; - src: url('http://9dbb143991406a7c655e-aa5fcb0a5a4ec34cff238a2d56ca4144.r56.cf5.rackcdn.com/cmunso.otf'); - } - - - div.cell{ - width:100%; - margin-left:auto; /*16% !important;* was preconised but pbs with some browsers*/ - margin-right:auto; - } - h1 { - font-family: Helvetica, serif; - } - h2 { - font-family: Helvetica, serif; - color: darkblue; - } - - h4{ - margin-top:12px; - margin-bottom: 3px; - } - - - .rendered_html p {text-align:justify} - - div.text_cell_render{ - font-family: "Computer Modern", Arial, "Helvetica Neue", Helvetica, Geneva, sans-serif; - line-height: 145%; - font-size: 130%; - color: black; - width:100%; - /*width:800px;*/ - margin-left:0px; - margin-right:auto; - - } - .CodeMirror{ - font-family: "Source Code Pro", source-code-pro,Consolas, monospace; -color: darkblue; - } - -/* commented because many people prefer to have the prompt - .prompt{ - display: None; - } -*/ - -/* -div.output_area -{ - display: block; - margin-left: auto; - margin-right: auto -} -*/ -div.output_subarea.output_text -{ - margin-left: +2%; -} - -div.output_subarea.output_png -{ - margin-left: +10%; -} -div.output_subarea.output_svg -{ - margin-left: +10%; -} - - - .text_cell_render h5 { - font-weight: 300; - font-size: 22pt; - color: #4057A1; - font-style: italic; - margin-bottom: .5em; - margin-top: 0.5em; - display: block; - } - - .warning{ - color: rgb( 240, 20, 20 ) - } - - - diff --git a/testing/latex_envs/conversion/post_html_thms.js b/testing/latex_envs/conversion/post_html_thms.js deleted file mode 100644 index 1353887..0000000 --- a/testing/latex_envs/conversion/post_html_thms.js +++ /dev/null @@ -1,37 +0,0 @@ -// Node.js script for html to html conversion, -// substituting html classes to LaTeX theorem like environment constructs -// This applies the same substitutions -// that we use in the live notebook . - - -// read the markdown from stdin -var html_to_analyse=''; -process.stdin.on("data", function (data) { - html_to_analyse += data; -}); - - - -// perform the html transform once stdin is complete -process.stdin.on("end", function () { -var fs = require('fs'); -var IPython; - -var static_path = "/usr/share/ipython/notebook/static/"; -var marked = require( static_path + 'components/marked/lib/marked.js'); - -var eqNum = 0; // begins equation numbering at eqNum+1 -var eqLabelWithNumbers = true; //if true, label equations with equation numbers; otherwise using the tag specified by \label -var conversion_to_html = true; - -// Read the actual conversion script file, located in $HOME/.ipython/nbextensions -eval(fs.readFileSync( process.env['HOME'] + "/.ipython/nbextensions/thmsInNb.js", 'utf8') ); - - - //IPython.mathjaxutils.init(); - var html_converted = thmsInNbConv(marked,html_to_analyse); - - process.stdout.write(html_converted); - -}); - diff --git a/testing/latex_envs/conversion/readme.md b/testing/latex_envs/conversion/readme.md deleted file mode 100644 index 3e16452..0000000 --- a/testing/latex_envs/conversion/readme.md +++ /dev/null @@ -1,24 +0,0 @@ - -This directory contains utilitary functions used to convert the notebook, with embedded LaTeX structures, to LaTeX or html. -Procedures are detailed in the documentation latex_env_doc.* and documentation.pdf. - -Files ------ -File | description ------------------------ | ----------------------------- -documentation.pdf | Documentation (pdf version) -- look at html and notebook version latex_env_doc.* -documentation.tex | Master file for producing documentation (includes latex_env_doc.tex) -header.tex | Header used for LaTeX compilation -ipynb_thms_to_html | Converter from ipynb to html -ipynb_thms_to_latex | Converter from ipynb to LaTeX -latex_env_doc.ipynb | Documentation and demo notebook -latex_env_doc.tex | Documentation and demo converted to LaTeX -latex_env_doc_tmp_files | temporary files from conversion -post_html_thms.js | Utilitary script used during ipynb --> html conversion -readme.md | This file -texheaders_rm.py | Utilitary script used during ipynb --> LaTeX conversion (removes header/footer) -thmInNb_tolatex.py | Utilitary script used during ipynb --> LaTeX conversion -thmsInNb_article.tplx | Template for LaTeX conversion (article style) -thmsInNb_book.tplx | Template for LaTeX conversion (book style) -thmsInNb.tpl | Template for html conversion - diff --git a/testing/latex_envs/conversion/texheaders_rm.py b/testing/latex_envs/conversion/texheaders_rm.py deleted file mode 100644 index 508c613..0000000 --- a/testing/latex_envs/conversion/texheaders_rm.py +++ /dev/null @@ -1,86 +0,0 @@ - -""" -Created on Thu Nov 18 15:34:38 2014 -@author: bercherj -Remove TeX's file headers and footers -""" - -import glob -import os -import sys -import time -from stat import * - - -def texheaders_filtering(input_file): - import re - - st = os.stat(input_file) - atime = st[ST_ATIME] #access time - mtime = st[ST_MTIME] #modification time - - with open(input_file,'rt') as f: - text=f.read() - #print(text) - my_texfile = input_file #file.split('.html')[0] + 'b.html' - if sys.version_info >= (3,0,0): - my_texfile_desc = open(my_texfile, 'wt', newline='') - else: - my_texfile_desc = open(my_texfile_file, 'wt') - - - tex_text=re.search('begin{document}([\s\S]*?)\\\\end{document}',text,flags=re.M) - #print(tex_text) - newtext=tex_text.group(1) - newtext=newtext.replace('\maketitle','') - newtext=newtext.replace('\\tableofcontents','') - - - my_texfile_desc.write(newtext) - - #modify the file timestamp - my_texfile_desc.close() - os.utime(my_texfile,(atime,mtime)) - - - -verbose=True -if __name__ == '__main__': - import argparse - - whatitdoes="""This program filters a tex file in order to remove headers - and footer, that is all what is before the \\begin{document} (included) and - after the \\end{document} (included)""" - myself="(c) JFB 2014" - parser = argparse.ArgumentParser(description=whatitdoes, epilog=myself) - # mandatory argument - parser.add_argument( - help = 'List of files to filter (accepts regular expressions)', - dest = 'argfiles', default = '*.tex', type = str, nargs = '*') - # verbosity flag - parser.add_argument('-v','--verbose', help = 'Prints information', - dest = 'verbose', default = False, #action='store_true' - action='count') - - arguments = parser.parse_args() - verbose=arguments.verbose - if verbose==2: print("script arg: ", arguments.argfiles) - - if isinstance(arguments.argfiles,list): - tex_files=[] - for x in arguments.argfiles: - tex_files = tex_files+glob.glob(x) - else: - tex_files = glob.glob(arguments.argfiles) - if verbose==2: print("glog.glog expansion: ", tex_files, '\n') - if len(tex_files ) == 0: - raise RuntimeError('No TeX files to convert.') - - for file in tex_files: - if verbose: - print("Filtering {}".format(file)) - texheaders_filtering(file) - - - - diff --git a/testing/latex_envs/conversion/thmInNb_tolatex.py b/testing/latex_envs/conversion/thmInNb_tolatex.py deleted file mode 100644 index 31514fe..0000000 --- a/testing/latex_envs/conversion/thmInNb_tolatex.py +++ /dev/null @@ -1,57 +0,0 @@ -# -*- coding: utf-8 -*- -""" -@author: bercherj -The content of selected environments is translated from markdown to latex, via pandoc -The environments are extracted recursively and translated. Then they are inserted back into the tex file. -""" - -#**************************************************************************** -def EnvReplace(message): - - import re - from IPython.nbconvert.utils.pandoc import pandoc - - environmentMap = ['thm','lem', 'cor', 'prop','defn','rem','prob','excs','examp','theorem','lemma','corollary','proposition', - 'definition','remark','problem', 'exercise', 'example','proof','property'] - # this map should match the map defined in .ipython/nbextensions/thmsInNb.js - - def replacement(a): - - w=a.group(0) - theenv=a.group(1) - tobetranslated=a.group(2) - if theenv in environmentMap: - out=pandoc(tobetranslated, 'markdown', 'latex') - result = '/begin{' + theenv + '}\n'+ out + '\n\end{' + theenv + '}'; - else: - result = '/begin{' + theenv + '}'+ tobetranslated + '\end{' + theenv + '}'; - #the transform \begin --> /begin is done in order to avoid the group to match again - - #print(result) - return result - - code="Init" - data=message - while (code!=None): - code=re.search(r'\\begin{(\w+)}([\s\S]*?)\\end{\1}', data) - data=re.sub(r'\\begin{(\w+)}([\s\S]*?)\\end{\1}', replacement, data) - return data - - - #while (message.match(/\\begin{(\w+)}([\s\S]*?)\\end{\1}/gm)!="") { - -if __name__ == '__main__': - # TEST - import sys - infile=sys.argv[1] - outfile=sys.argv[2] - with open (sys.argv[1], "r") as infile: - text=infile.read() - text=text.replace("\\begin{document}","/begin{document}") - out=EnvReplace(text) - out=out.replace("/begin","\\begin") - with open (sys.argv[2], "w") as outfile: - outfile.write("%Thms like environments translated from notebook using thmInNb_tolatex.py\n") - outfile.write(out) - - diff --git a/testing/latex_envs/conversion/thmsInNb.tpl b/testing/latex_envs/conversion/thmsInNb.tpl deleted file mode 100755 index 3daa172..0000000 --- a/testing/latex_envs/conversion/thmsInNb.tpl +++ /dev/null @@ -1,75 +0,0 @@ -{%- extends 'full.tpl' -%} - - -{%- block header -%} - - - - -[{{nb.metadata.name}}] -{% for css in resources.inlining.css -%} - -{% endfor %} - - - - - - - - - - - - - - - - - -{%- endblock header -%} - -{% block body %} - -{{ super() }} - -{%- endblock body %} - -{% block footer %} - -{% endblock footer %} diff --git a/testing/latex_envs/conversion/thmsInNb_article.tplx b/testing/latex_envs/conversion/thmsInNb_article.tplx deleted file mode 100644 index e6a8993..0000000 --- a/testing/latex_envs/conversion/thmsInNb_article.tplx +++ /dev/null @@ -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' *)) - - - - diff --git a/testing/latex_envs/conversion/thmsInNb_book.tplx b/testing/latex_envs/conversion/thmsInNb_book.tplx deleted file mode 100644 index 10f29f7..0000000 --- a/testing/latex_envs/conversion/thmsInNb_book.tplx +++ /dev/null @@ -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' *)) - - - - diff --git a/testing/latex_envs/conversion/toc_and_cln.py b/testing/latex_envs/conversion/toc_and_cln.py deleted file mode 100644 index 5d7296a..0000000 --- a/testing/latex_envs/conversion/toc_and_cln.py +++ /dev/null @@ -1,125 +0,0 @@ - -""" -Created on Thu Nov 18 15:34:38 2014 -@author: JF -""" - -import glob -import os -import sys -import time -from stat import * - - -def texheaders_filtering(input_file): - import re - - st = os.stat(input_file) - atime = st[ST_ATIME] #access time - mtime = st[ST_MTIME] #modification time - - with open(input_file,'rt') as f: - text=f.read() - #print(text) - my_texfile = input_file #file.split('.html')[0] + 'b.html' - if sys.version_info >= (3,0,0): - my_texfile_desc = open(my_texfile, 'wt', newline='') - else: - my_texfile_desc = open(my_texfile_file, 'wt') - - - def remp(intext): - #out=re.findall('\\\\[sub]?section',intext.group(0)) - out=re.findall('(\\\\[sub]?section|\\\\chapter)',intext.group(0)) - - print(out) - """"print(out.group(0)) - return out.group(0) """ - return out[-1] - - #newtext=re.sub('section{Table of Contents}([\s\S]*?)\\[sub]?section{','Remplacement',text,flags=re.M) - newtext=re.sub('\\\\section{Table of Contents}([\s\S]*?)(\\\\[sub]?section|\\\\chapter)',remp,text,flags=re.M) - newtext=re.sub('\\\\begin{verbatim}[\s]*?[\s]*?\\\\end{verbatim}','',newtext,flags=re.M) - newtext=re.sub('\\\\begin{verbatim}[\s]*?[\s]*?\\\\end{verbatim}','',newtext,flags=re.M) - - #bottom page with links to Index/back/next (suppress this) -#'----[\s]*?

' - newtext=re.sub('\\\\begin{center}\\\\rule{3in}{0.4pt}\\\\end{center}[\s]*?\\\\href{toc.ipynb}{Index}[\S\s ]*?.ipynb}{Next}','',newtext,flags=re.M) - - - # figcaption(text,label=) - tofind="figcaption\(([\s\S]*?)\)\n([\s\S]*?)\\\\begin{center}\s*\\\\adjustimage[\s\S]*?}}{([\S]*?)}\s*\\\\end{center}" - - def replacement(text): - cap=re.match("\"([\S\s]*?)\",[\S\s]*?label=\"([\S]*?)\"",text.group(1)) - - if cap==None: - cap=re.match("\"([\S\s]*?)\"",text.group(1)) - caption=cap.group(1) - 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) - 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) - return rep - code="Init" - - while (code!=None): - code=re.search(tofind,newtext) - newtext=re.sub(tofind,replacement,newtext,flags=re.M) - - - - my_texfile_desc.write(newtext) - - #modify the file timestamp - my_texfile_desc.close() - os.utime(my_texfile,(atime,mtime)) - - - - - -verbose=True -if __name__ == '__main__': - import argparse - - whatitdoes="""This program filters a LaTeX file \n - - in order to remove the first 'table of contents section', - to the next section ; - - it replaces figcaption structures to "\\caption{\\label{}}" LaTeX constructs. - - Finally, it also filters out various 'spurious' outputs""" - myself="(c) JFB 2014" - parser = argparse.ArgumentParser(description=whatitdoes, epilog=myself) - # mandatory argument - parser.add_argument( - help = 'List of files to filter (accepts regular expressions)', - dest = 'argfiles', default = '*.tex', type = str, nargs = '*') - # verbosity flag - parser.add_argument('-v','--verbose', help = 'Prints information', - dest = 'verbose', default = False, #action='store_true' - action='count') - - arguments = parser.parse_args() - verbose=arguments.verbose - if verbose==2: print("script arg: ", arguments.argfiles) - - if isinstance(arguments.argfiles,list): - tex_files=[] - for x in arguments.argfiles: - tex_files = tex_files+glob.glob(x) - else: - tex_files = glob.glob(arguments.argfiles) - if verbose==2: print("glog.glog expansion: ", tex_files, '\n') - if len(tex_files ) == 0: - raise RuntimeError('No TeX files to convert.') - - for file in tex_files: - if verbose: - print("Filtering {}".format(file)) - texheaders_filtering(file) - - - - diff --git a/testing/latex_envs/documentation.pdf b/testing/latex_envs/documentation.pdf deleted file mode 100644 index 6b880384f3ba4ba064bbd34e265b3c6f672ead1e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 177306 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
-
- -
-
-
-
-
-

(some) LaTeX environments for Jupyter notebook

-
-
-
-
-
-
-
In [1]:
-
-
-
%%javascript 
-IPython.load_extensions('calico-document-tools');
-
- -
-
-
- -
-
- - -
- - -
- -
- -
- -
-
- -
-
-
-
In [2]:
-
-
-
%%javascript 
-IPython.load_extensions('latex_envs');
-
- -
-
-
- -
-
- - -
- - -
- -
- -
- -
-
- -
-
-
-
In [ ]:
-
-
-
%%html
-<style>
-    .prompt{
-        display: none;
-    }    
-
-</style>
-
- -
-
-
- -
-
-
-
-
-
-

1. Goal

-
-
-
-
-
-
-
-
-

1.1 Initial goal

-
-
-
-
-
-
-
-
-

The initial goal was only to add an environment theorem in my workflow. That is to be able to type something like -

-\begin{theorem} 
-Let $u$ and $v$ be two vectors of $\mathbb{R}^n$. The dot product can be expressed as
-$$u^Tv = |u||v| \cos \theta,$$ 
-where $\theta$ is the angle between $u$ and $v$ ...
-\end{theorem}
-
-in a markdown cell and have it rendered, like

-Theorem 1
-Let $u$ and $v$ be two vectors of $\mathbb{R}^n$. The dot product can be expressed as $$u^Tv = |u||v| \cos \theta,$$ where $\theta$ is the angle between $u$ and $v$ ... -
-
-
-
-
-
-
-
-
-

1.2 Features

-
-
-
-
-
-
-
-
-

The initial project has evolved to account for more environments and introduce some other features.

- -
-
-
-
-
-
-
-
-

1.2.1 Support for simple LaTeX commands

-
-
-
-
-
-
-
-
-

We also added some LaTeX commands (e.g. \textit, \textbf, \underline) -- this is useful in the case of copy-paste from a LaTeX document. Labels and references are supported, including for equations.

- -
-
-
-
-
-
-
-
-

1.2.2 Available environments

-
-
-
-
-
-
-
-
-
    -
  • theorems-like environments: property, theorem, lemma, corollary, proposition, definition,remark, problem, exercise, example,
  • -
  • lists: enumerate, itemize,
  • -
  • limited support for a figure environment,
  • -
  • an environment listing,
  • -
  • textboxa, wich is a textbox environment defined as a demonstration (see below).
  • -
-

More environments can be added easily in the javascript source file thmsInNb.js. The rendering is done according to the stylesheet latex_env.css, which can be customized.

- -
-
-
-
-
-
-
-
-

1.2.3 Automatic numerotation

-
-
-
-
-
-
-
-
-

Counters for numbering are implemented: one for theorems-like environments, a second for exercises-like environments and a third one for numbering figures.
-Mathjax-equations with a label are also numbered document-wide (in contrast with standard notebook/mathjax numbering where the scope of numbering is limited to cells). -An anchor is created for any label which enables to links things in the document: \label and \ref are both supported. A limitation is that numbering is updated (incremented) each time a cell is rendered. A toolbar button is provided to reset the counters and refresh the rendering of the whole document.

- -
-
-
-
-
-
-
-
-

1.2.4 Other features

-
-
-
-
-
-
-
-
-
    -
  • It is possible to mix LaTeX and markdown markup in environments
  • -
  • Environments can be nested. However, this is not always perfect...
  • -
- -
-
-
-
-
-
-
-
-

2. Usage and examples

-
-
-
-
-
-
-
-
-

2.1 Installation

-
-
-
-
-
-
-
-
-

The extension consists in two javascript scripts: latex_envs.js, thmsInNb.js together with a stylesheet latex_envs.css. -Follow the instructions in the wiki to install the extension. You can simply copy these files in the notebook extension directory (usually ~/.ipython/nbextensions) and load the extension in the notebook by

- -
%%javascript 
-IPython.load_extensions('latex_envs');
- -
-
-
-
-
-
-
-
-

2.2 A first example

-
-
-
-
-
-
-
-
-

This example shows another example of environment, featuring automatic numerotation, and the use of labels and references. Also note that standard markdown can be present in the environment and is interpreted. -The rendering is done according to the stylesheet latex_env.css, which of course, can be tailored to specific uses and tastes.

- -
-
-
-
-
-
-
-
-
-\begin{definition} \label{def:FT}
-Let $x[n]$ be a sequence of length $N$. Then, its **Fourier transform** is given by
-\begin{equation}
-\label{eq:FT}
-X[k]= \frac{1}{N} \sum_{n=0}^{N-1} x[n] e^{-j2\pi \frac{kn}{N}}
-\end{equation}
-\end{definition}
-
-
-
-
-
-
-
-
-
-Definition 2

[def:FT] -Let $x[n]$ be a sequence of length $N$. Then, its Fourier transform is given by -\begin{equation} -\label{eq:FT2} -X[k]= \frac{1}{N} \sum_{n=0}^{N-1} x[n] e^{-j2\pi \frac{kn}{N}} -\end{equation}

-
-
-
-
-
-
-
-
-
-

This is an extremely important tool in signal processing. We put this in evidence using the textboxa environment -- which is defined here in the css, and that one should define in the LaTeX counterpart: -

-\begin{textboxa}
-The Fourier transform is an extremely useful tool to have in your toolbox!
-\end{textboxa}
-

- -
-
-
-
-
-
-
-
-
-The Fourier transform is an extremely useful tool to have in your toolbox! -
-
-
-
-
-
-
-
-
-

As an example, consider the Fourier transform (\ref{eq:FT2}) of a pure cosine wave given by -$$ -x[n]= \cos(2\pi k_0 n/N), -$$ -where $k_0$ is an integer. Its Fourier transform is given by -$$ -X[k] = \frac{1}{2} \left( \delta[k-k_0] + \delta[k-k_0] \right), -$$ -modulo $N$. This is illustrated in the following simple script:

- -
-
-
-
-
-
In [21]:
-
-
-
%matplotlib inline
-import numpy as np
-import matplotlib.pyplot as plt 
-from numpy.fft import fft
-k0=4; N=128; n=np.arange(N); k=np.arange(N)
-x=np.sin(2*np.pi*k0*n/N)
-X=fft(x)
-plt.stem(k,np.abs(X))
-plt.xlim([0, 20])
-plt.title("Fourier transform of a cosine")
-_=plt.xlabel("Frequency index (k)")
-
- -
-
-
- -
-
- - -
- - -
- -
- -
- -
-
- -
-
-
-
-
-
-

2.3 Second example

-
-
-
-
-
-
-
-
-

This example shows a series of environments, with different facets; links, references, markdown or/and LaTeX formatting within environments. Again, the rendering is done according to the stylesheet latex_env.css, which can be tailored. The listing of environments below is typed using the environment listing...

- -
-
-
-
-
-
-
-
-
-\begin{definition} \label{def:diffeq}
-We call \textbf{difference equation} an equation of the form
-$$
-\label{eq:diffeq}
-y[n]= \sum_{k=1}^{p} a_k y[n-k] + \sum_{i=0}^q b_i x[n-i]
-$$
-\end{definition}
-
-\begin{property}
-If all the $a_k$ in equation (\ref{eq:diffeq}) of definition \ref{def:diffeq} are zero, then the filter has a **finite impulse response**. 
-\end{property}
-
-\begin{proof}
-Let $\delta[n]$ denote the Dirac impulse. Take $x[n]=\delta[n]$ in (\ref{eq:diffeq}). This yields, by definition, the impulse response:
-$$
-\label{eq:fir}
-h[n]= \sum_{i=0}^q b_i \delta[n-i],
-$$
-which has finite support. 
-\end{proof}
-
-\begin{theorem}
-The poles of a causal stable filter are located within the unit circle in the complex plane.
-\end{theorem}
-
-\begin{example} \label{ex:IIR1}
-Consider $y[n]= a y[n-1] +  x[n]$. The pole of the transfer function is $z=a$. The impulse response $h[n]=a^n$ has infinite support.
-\end{example}
-
-In the following exercise, you will check that the filter is stable iff $a$<1.
-
-\begin{exercise}\label{ex:exofilter}
-Consider the filter defined in Example \ref{ex:IIR1}. Using the **function** `lfilter` of scipy, compute and plot the impulse response for several values of $a$.
-\end{exercise}
-
-
-
-
-
-
-
-
-
-
-

The lines above are rendered as follows (of course everything can be tailored in the stylesheet):

-Definition 3
[def:diffeq] -We call difference equation an equation of the form -\begin{equation} -\label{eq:diffeq} -y[n]= \sum_{k=1}^{p} a_k y[n-k] + \sum_{i=0}^q b_i x[n-i] -\end{equation} -

Properties of the filter are linked to the coefficients of the difference equation. For instance, an immediate property is

-Property 4

If all the $a_k$ in equation (\ref{eq:diffeq}) of definition [def:diffeq] are zero, then the filter has a finite impulse response.

-
Proof
-Let $\delta[n]$ denote the Dirac impulse. Take $x[n]=\delta[n]$ in (\ref{eq:diffeq}). This yields, by definition, the impulse response: -\begin{equation} -\label{eq:fir} -h[n]= \sum_{i=0}^q b_i \delta[n-i], -\end{equation} -which has finite support. -
Theorem 5
-The poles of a causal stable filter are located within the unit circle in the complex plane. -
Example 1
[ex:IIR1] -Consider $y[n]= a y[n-1] + x[n]$. The pole of the transfer function is $z=a$. The impulse response $h[n]=a^n$ has infinite support. -

In the following exercise, you will check that the filter is stable iff $a$<1.

-Exercise 2

[ex:exofilter] -Consider the filter defined in Example [ex:IIR1]. Using the function lfilter of scipy, compute and plot the impulse response for several values of $a$.

-
-
-
-
-
-
-
-
-
-
-The solution of exercise \ref{ex:exofilter}, which uses a difference equation as in Definition \ref{def:diffeq}:
-

The solution of exercise [ex:exofilter], which uses a difference equation as in Definition [def:diffeq]:

- -
-
-
-
-
-
In [22]:
-
-
-
%matplotlib inline
-import numpy as np
-import matplotlib.pyplot as plt 
-from scipy.signal import lfilter
-d=np.zeros(100); d[0]=1 #dirac impulse
-alist=[0.2, 0.8, 0.9, 0.95, 0.99, 0.999, 1.001, 1.01]
-for a in alist:
-    h=lfilter([1], [1, -a],d)
-    _=plt.plot(h, label="a={}".format(a))
-plt.ylim([0,1.5])
-plt.xlabel('Time')
-_=plt.legend()
-
- -
-
-
- -
-
- - -
- - -
- -
- -
- -
-
- -
-
-
-
-
-
-

Finally, it is sometimes useful to integrate a figure within a markdown cell. The standard markdown markup for that is ![link](image), but a limitation is that the image can not be resized, can not be referenced and is not numbered. Furthermore it can be useful to re-use existing code. Threfore we have added a limited support for the figure environment. This enables to do something like -

-\begin{figure}
-\centerline{\includegraphics[width=10cm]{example.png}}
-\caption{\label{fig:example} This is an example of figure included using LaTeX commands.}
-\end{figure}
-
-which renders as -

Figure 1: [fig:example] This is an example of figure included using LaTeX commands.

-Of course, this Figure can now be referenced: -
-Figure \ref{fig:example} shows a second filter with input $X_2$, output $Y_2$  and an impulse response denoted as $h_2(n)$
-
-Figure [fig:example] shows a second filter with input $X_2$, output $Y_2$ and an impulse response denoted as $h_2(n)$

- -
-
-
-
-
-
-
-
-

2.4 Third example:

-
-
-
-
-
-
-
-
-

This example shows that environments like itemize or enumerate are also available. As already indicated, this is useful for copying text from a TeX file. Following the same idea, text formating commands \textit, \textbf, \underline, etc are also available.

- -
-
-
-
-
-
-
-
-
-The following \textit{environments} are available:
-\begin{itemize}
-    \item \textbf{Theorems and likes}
-    \begin{enumerate}
-        \item theorem,
-        \item lemma,
-        \item corollary
-        \item ...
-    \end{enumerate}
-    \item \textbf{exercises}
-    \begin{enumerate}
-        \item problem,
-        \item example,
-        \item exercise
-    \end{enumerate}
-\end{itemize}
-
-
-
-
-
-
-
-
-
-

which gives...

-

The following environments are available: -

    -
  • Theorems and likes -
      -
    1. theorem, -
    2. lemma, -
    3. corollary -
    4. ... -
    -
  • exercises -
      -
    1. problem, -
    2. example, -
    3. exercise -
    -

- -
-
-
-
-
-
-
-
-

3. (post)-Converters

-
-
-
-
-
-
-
-
-

The extension works in the live-notebook. Since it relies on a bunch of javascript, the notebook does not render as is in very nice services such as nbviewer or github viewer. Similarly, nbconvert does not know of the LaTeX constructs which are used and therefore do not fully convert notebooks making use of this extension. Therefore, it is necessary to add a post conversion step to conversions provided by nbconvert. Though an interface exists for adding post-converters to nbconvert, this (first) author was too lazy and not enough strong to implement the post conversion along these lines. What has be done are simple bash and python scripts that perform this conversion.

- -
-
-
-
-
-
-
-
-

3.1 Installation

-
-
-
-
-
-
-
-
-

Copy the scripts files to a directory in your search path, or launch the scripts with the complete path. The two main scripts are ipynb_thms_to_html (conversion to html, of course:) and ipynb_thms_to_latex (conversion to LaTeX!).

- -
-
-
-
-
-
-
-
-

3.2 Conversion to html

-
-
-
-
-
-
-
-
-

Requirements: You will need perl, nodejs, and ipython3 (the script calls ipython3; if your interpreter is ipython, edit the script and replace the different occurences).

-

The conversion to html is done by something like

- -
    [path/]ipynb_thms_to_html filename
-
-

or a list of files such as

- -
    [path/]ipynb_thms_to_html *.ipynb
-
-

In turn, this script makes somes substitutions using perl, and then uses the nodesj javascript interpreter to make the very same substitutions that are done in the live notebook. -The conversion uses the template thmsInNb.tpl (located in the script directory). It also copies the css latex_env.css in the directory of the output html file (it must be copied with html files in the case of web upload).

- -
-
-
-
-
-
-
-
-

3.3 Conversion to LaTeX

-
-
-
-
-
-
-
-
-

Requirements: You will need perl and ipython3.

-

The conversion to LaTeX is done by something like

- -
    [path/]ipynb_thms_to_latex filename
-
-

or a list of files such as

- -
    [path/]ipynb_thms_to_latex *.ipynb
-
-
-

The script makes some substitutions and cleaning in arkdown cells, then calls the legacy nbconvert. Afterward, it runs through the LaTeX environments and converts their contents (which can contain markdown markup) to LaTeX. Note that the script contains a list of the LaTeX environments to process. In the case of the addition of an environment in the main javascript (thmsInNb.js), this list must also be updated.

-

Finally, the script removes the header and footer in the LaTeX file. This is a personnal choice, and the corresponding line can be safely commented.

-Example 3

As for an example, the present document has been converted using

-
ipynb_thms_to_latex latex_env_doc.ipynb
-

Then the resulting file (without header/footer) has been included in the main file documentation.tex, where some LaTeX definitions of environments are done (namely listings, colors, etc) and compiled using

-
xelatex documentation
-

The output can be consulted here.

-
-
-
-
-
-
-
-
-
-

4. Disclaimer, sources and thanks

-
-
-
-
-
-
-
-
-

This is a not-quick but certainly dirty hack. I am a complete beginner in javascript and of course there are obviously a large amount of possible improvements of the code, in cleaning, factorizing, etc! Language also needs improvement.

-

Contributions will be welcome and deeply appreciated.

-

Originally, I used a piece of code from the nice online markdown editor stackedit https://github.com/benweet/stackedit/issues/187, where the authors also considered the problem of incorporating LaTeX markup in their markdown. I also used examples and code from https://github.com/ipython-contrib/IPython-notebook-extensions.

- -
-
-
-
-
-
In [101]:
-
-
-
%%javascript 
-IPython.load_extensions('latex_envs');
-
- -
-
-
- -
-
- - -
- - -
- -
- -
- -
-
- -
-
-
- - diff --git a/testing/latex_envs/latex_env_doc.ipynb b/testing/latex_envs/latex_env_doc.ipynb deleted file mode 100644 index b3cc5cf..0000000 --- a/testing/latex_envs/latex_env_doc.ipynb +++ /dev/null @@ -1,736 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "

(some) LaTeX environments for Jupyter notebook

" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#Table of Contents\n", - "* [1. Goal](#1.-Goal)\n", - "\t* [1.1 Initial goal](#1.1-Initial-goal)\n", - "\t* [1.2 Features](#1.2-Features)\n", - "\t\t* [1.2.1 Support for simple LaTeX commands](#1.2.1-Support-for-simple-LaTeX-commands)\n", - "\t\t* [1.2.2 Available environments](#1.2.2-Available-environments)\n", - "\t\t* [1.2.3 Automatic numerotation](#1.2.3-Automatic-numerotation)\n", - "\t\t* [1.2.4 Other features](#1.2.4-Other-features)\n", - "* [2. Usage and examples](#2.-Usage-and-examples)\n", - "\t* [2.1 Installation](#2.1-Installation)\n", - "\t* [2.2 A first example](#2.2-A-first-example)\n", - "\t* [2.3 Second example](#2.3-Second-example)\n", - "\t* [2.4 Third example:](#2.4-Third-example:)\n", - "* [3. (post)-Converters](#3.-%28post%29-Converters)\n", - "\t* [3.1 Installation](#3.1-Installation)\n", - "\t* [3.2 Conversion to html](#3.2-Conversion-to-html)\n", - "\t* [3.3 Conversion to LaTeX](#3.3-Conversion-to-LaTeX)\n", - "* [4. Disclaimer, sources and thanks](#4.-Disclaimer,-sources-and-thanks)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "application/javascript": [ - "IPython.load_extensions('calico-document-tools');" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "%%javascript \n", - "IPython.load_extensions('calico-document-tools');" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "application/javascript": [ - "IPython.load_extensions('latex_envs');" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "%%javascript \n", - "IPython.load_extensions('latex_envs');" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "%%html\n", - "" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# 1. Goal" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 1.1 Initial goal" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The initial goal was only to add an environment `theorem` in my workflow. That is to be able to type something like\n", - "\\begin{listing}\n", - "\\begin{theorem} \n", - "Let $u$ and $v$ be two vectors of $\\mathbb{R}^n$. The dot product can be expressed as\n", - "$$u^Tv = |u||v| \\cos \\theta,$$ \n", - "where $\\theta$ is the angle between $u$ and $v$ ...\n", - "\\end{theorem}\n", - "\\end{listing}\n", - "in a markdown cell and have it rendered, like\n", - "\n", - "\\begin{theorem}\n", - "Let $u$ and $v$ be two vectors of $\\mathbb{R}^n$. The dot product can be expressed as $$u^Tv = |u||v| \\cos \\theta,$$ where $\\theta$ is the angle between $u$ and $v$ ...\n", - "\\end{theorem}" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 1.2 Features" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The initial project has evolved to account for more environments and introduce some other features." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 1.2.1 Support for simple LaTeX commands" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We also added some LaTeX commands (e.g. `\\textit`, `\\textbf`, `\\underline`) -- this is useful in the case of copy-paste from a LaTeX document. Labels and references are supported, including for equations." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 1.2.2 Available environments" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "- **theorems-like environments**: *property, theorem, lemma, corollary, proposition, definition,remark, problem, exercise, example*,\n", - "- **lists**: *enumerate, itemize*, \n", - "- limited support for a *figure* environment,\n", - "- an environment *listing*,\n", - "- *textboxa*, wich is a `textbox` environment defined as a demonstration (see below).\n", - "\n", - "More environments can be added easily in the javascript source file `thmsInNb.js`. The rendering is done according to the stylesheet `latex_env.css`, which can be customized." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 1.2.3 Automatic numerotation" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Counters for numbering are implemented: one for theorems-like environments, a second for exercises-like environments and a third one for numbering figures. \n", - "Mathjax-equations with a label are also numbered document-wide (in contrast with standard notebook/mathjax numbering where the scope of numbering is limited to cells). \n", - "An anchor is created for any label which enables to links things in the document: `\\label` and `\\ref` are both supported. A limitation is that numbering is updated (incremented) each time a cell is rendered. A toolbar button is provided to reset the counters and refresh the rendering of the whole document." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 1.2.4 Other features" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "- It is possible to mix LaTeX and markdown markup in environments \n", - "- Environments can be nested. However, this is not always perfect..." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "collapsed": true - }, - "source": [ - "# 2. Usage and examples" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 2.1 Installation" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The extension consists in two javascript scripts: `latex_envs.js`, `thmsInNb.js` together with a stylesheet `latex_envs.css`. \n", - "Follow the instructions in the [wiki](https://github.com/ipython-contrib/IPython-notebook-extensions/wiki) to install the extension. You can simply copy these files in the notebook extension directory (usually ~/.ipython/nbextensions) and load the extension in the notebook by \n", - "\n", - " %%javascript \n", - " IPython.load_extensions('latex_envs');" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 2.2 A first example" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This example shows another example of environment, featuring automatic numerotation, and the use of labels and references. Also note that standard markdown can be present in the environment and is interpreted. \n", - "*The rendering is done according to the stylesheet `latex_env.css`, which of course, can be tailored to specific uses and tastes*. " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\\begin{listing}\n", - "\\begin{definition} \\label{def:FT}\n", - "Let $x[n]$ be a sequence of length $N$. Then, its **Fourier transform** is given by\n", - "\\begin{equation}\n", - "\\label{eq:FT}\n", - "X[k]= \\frac{1}{N} \\sum_{n=0}^{N-1} x[n] e^{-j2\\pi \\frac{kn}{N}}\n", - "\\end{equation}\n", - "\\end{definition}\n", - "\\end{listing}\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "\\begin{definition} \\label{def:FT}\n", - "Let $x[n]$ be a sequence of length $N$. Then, its **Fourier transform** is given by\n", - "\\begin{equation}\n", - "\\label{eq:FT2}\n", - "X[k]= \\frac{1}{N} \\sum_{n=0}^{N-1} x[n] e^{-j2\\pi \\frac{kn}{N}}\n", - "\\end{equation}\n", - "\\end{definition}" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This is an extremely important tool in signal processing. We put this in evidence using the `textboxa` environment -- which is defined here in the css, and that one should define in the LaTeX counterpart:\n", - "\\begin{listing}\n", - "\\begin{textboxa}\n", - "The Fourier transform is an extremely useful tool to have in your toolbox!\n", - "\\end{textboxa}\n", - "\\end{listing}" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\\begin{textboxa}\n", - "The Fourier transform is an extremely useful tool to have in your toolbox!\n", - "\\end{textboxa}\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "As an example, consider the Fourier transform (\\ref{eq:FT2}) of a pure cosine wave given by\n", - "$$\n", - "x[n]= \\cos(2\\pi k_0 n/N),\n", - "$$\n", - "where $k_0$ is an integer. Its Fourier transform is given by \n", - "$$\n", - "X[k] = \\frac{1}{2} \\left( \\delta[k-k_0] + \\delta[k-k_0] \\right), \n", - "$$\n", - "modulo $N$. This is illustrated in the following simple script:" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "%matplotlib inline\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt \n", - "from numpy.fft import fft\n", - "k0=4; N=128; n=np.arange(N); k=np.arange(N)\n", - "x=np.sin(2*np.pi*k0*n/N)\n", - "X=fft(x)\n", - "plt.stem(k,np.abs(X))\n", - "plt.xlim([0, 20])\n", - "plt.title(\"Fourier transform of a cosine\")\n", - "_=plt.xlabel(\"Frequency index (k)\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 2.3 Second example" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This example shows a series of environments, with different facets; **links, references, markdown or/and LaTeX formatting within environments**. Again, the rendering is done according to the stylesheet `latex_env.css`, which can be tailored. The listing of environments below is typed using the environment *listing*..." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\\begin{listing}\n", - "\\begin{definition} \\label{def:diffeq}\n", - "We call \\textbf{difference equation} an equation of the form\n", - "$$\n", - "\\label{eq:diffeq}\n", - "y[n]= \\sum_{k=1}^{p} a_k y[n-k] + \\sum_{i=0}^q b_i x[n-i]\n", - "$$\n", - "\\end{definition}\n", - "\n", - "\\begin{property}\n", - "If all the $a_k$ in equation (\\ref{eq:diffeq}) of definition \\ref{def:diffeq} are zero, then the filter has a **finite impulse response**. \n", - "\\end{property}\n", - "\n", - "\\begin{proof}\n", - "Let $\\delta[n]$ denote the Dirac impulse. Take $x[n]=\\delta[n]$ in (\\ref{eq:diffeq}). This yields, by definition, the impulse response:\n", - "$$\n", - "\\label{eq:fir}\n", - "h[n]= \\sum_{i=0}^q b_i \\delta[n-i],\n", - "$$\n", - "which has finite support. \n", - "\\end{proof}\n", - "\n", - "\\begin{theorem}\n", - "The poles of a causal stable filter are located within the unit circle in the complex plane.\n", - "\\end{theorem}\n", - "\n", - "\\begin{example} \\label{ex:IIR1}\n", - "Consider $y[n]= a y[n-1] + x[n]$. The pole of the transfer function is $z=a$. The impulse response $h[n]=a^n$ has infinite support.\n", - "\\end{example}\n", - "\n", - "In the following exercise, you will check that the filter is stable iff $a$<1.\n", - "\n", - "\\begin{exercise}\\label{ex:exofilter}\n", - "Consider the filter defined in Example \\ref{ex:IIR1}. Using the **function** `lfilter` of scipy, compute and plot the impulse response for several values of $a$.\n", - "\\end{exercise}\n", - "\n", - "\\end{listing}\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The lines above are rendered as follows (of course everything can be tailored in the stylesheet):\n", - "\n", - "\\begin{definition} \\label{def:diffeq}\n", - "We call \\textbf{difference equation} an equation of the form\n", - "\\begin{equation}\n", - "\\label{eq:diffeq}\n", - "y[n]= \\sum_{k=1}^{p} a_k y[n-k] + \\sum_{i=0}^q b_i x[n-i]\n", - "\\end{equation}\n", - "\\end{definition}\n", - "Properties of the filter are linked to the coefficients of the difference equation. For instance, an immediate property is \n", - "\n", - "\\begin{property}\n", - "If all the $a_k$ in equation (\\ref{eq:diffeq}) of definition \\ref{def:diffeq} are zero, then the filter has a **finite impulse response**. \n", - "\\end{property}\n", - "\n", - "\\begin{proof}\n", - "Let $\\delta[n]$ denote the Dirac impulse. Take $x[n]=\\delta[n]$ in (\\ref{eq:diffeq}). This yields, by definition, the impulse response:\n", - "\\begin{equation}\n", - "\\label{eq:fir}\n", - "h[n]= \\sum_{i=0}^q b_i \\delta[n-i],\n", - "\\end{equation}\n", - "which has finite support. \n", - "\\end{proof}\n", - "\n", - "\n", - "\\begin{theorem}\n", - "The poles of a causal stable filter are located within the unit circle in the complex plane.\n", - "\\end{theorem}\n", - "\n", - "\n", - "\\begin{example} \\label{ex:IIR1}\n", - "Consider $y[n]= a y[n-1] + x[n]$. The pole of the transfer function is $z=a$. The impulse response $h[n]=a^n$ has infinite support.\n", - "\\end{example}\n", - "\n", - "In the following exercise, you will check that the filter is stable iff $a$<1.\n", - "\n", - "\\begin{exercise}\\label{ex:exofilter}\n", - "Consider the filter defined in Example \\ref{ex:IIR1}. Using the **function** `lfilter` of scipy, compute and plot the impulse response for several values of $a$.\n", - "\\end{exercise}\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\\begin{listing}\n", - "The solution of exercise \\ref{ex:exofilter}, which uses a difference equation as in Definition \\ref{def:diffeq}:\n", - "\\end{listing}\n", - "The solution of exercise \\ref{ex:exofilter}, which uses a difference equation as in Definition \\ref{def:diffeq}:" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "%matplotlib inline\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt \n", - "from scipy.signal import lfilter\n", - "d=np.zeros(100); d[0]=1 #dirac impulse\n", - "alist=[0.2, 0.8, 0.9, 0.95, 0.99, 0.999, 1.001, 1.01]\n", - "for a in alist:\n", - " h=lfilter([1], [1, -a],d)\n", - " _=plt.plot(h, label=\"a={}\".format(a))\n", - "plt.ylim([0,1.5])\n", - "plt.xlabel('Time')\n", - "_=plt.legend()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Finally, it is sometimes useful to integrate a figure within a markdown cell. The standard markdown markup for that is `![link](image)`, but a limitation is that the image can not be resized, can not be referenced and is not numbered. Furthermore it can be useful to re-use existing code. Threfore we have added a limited support for the `figure` environment. This enables to do something like\n", - "\\begin{listing}\n", - "\\begin{figure}\n", - "\\centerline{\\includegraphics[width=10cm]{example.png}}\n", - "\\caption{\\label{fig:example} This is an example of figure included using LaTeX commands.}\n", - "\\end{figure}\n", - "\\end{listing}\n", - "which renders as\n", - "\\begin{figure}\n", - "\\centerline{\\includegraphics[width=10cm]{example.png}}\n", - "\\caption{\\label{fig:example} This is an example of figure included using LaTeX commands.}\n", - "\\end{figure}\n", - "Of course, this Figure can now be referenced: \n", - "\\begin{listing}\n", - "Figure \\ref{fig:example} shows a second filter with input $X_2$, output $Y_2$ and an impulse response denoted as $h_2(n)$\n", - "\\end{listing}\n", - "Figure \\ref{fig:example} shows a second filter with input $X_2$, output $Y_2$ and an impulse response denoted as $h_2(n)$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 2.4 Third example:" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This example shows that environments like itemize or enumerate are also available. As already indicated, this is useful for copying text from a TeX file. Following the same idea, text formating commands `\\textit`, `\\textbf`, `\\underline`, etc are also available." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\\begin{listing}\n", - "The following \\textit{environments} are available:\n", - "\\begin{itemize}\n", - " \\item \\textbf{Theorems and likes}\n", - " \\begin{enumerate}\n", - " \\item theorem,\n", - " \\item lemma,\n", - " \\item corollary\n", - " \\item ...\n", - " \\end{enumerate}\n", - " \\item \\textbf{exercises}\n", - " \\begin{enumerate}\n", - " \\item problem,\n", - " \\item example,\n", - " \\item exercise\n", - " \\end{enumerate}\n", - "\\end{itemize}\n", - "\\end{listing}" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "which gives... \n", - "\n", - "The following \\textit{environments} are available:\n", - "\\begin{itemize}\n", - "\\item \\textbf{Theorems and likes}\n", - "\\begin{enumerate}\n", - "\\item theorem,\n", - "\\item lemma,\n", - "\\item corollary\n", - "\\item ...\n", - "\\end{enumerate}\n", - "\\item \\textbf{exercises}\n", - "\\begin{enumerate}\n", - "\\item problem,\n", - "\\item example,\n", - "\\item exercise\n", - "\\end{enumerate}\n", - "\\end{itemize}" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# 3. (post)-Converters" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The extension works in the live-notebook. Since it relies on a bunch of javascript, the notebook does not render as is in very nice services such as `nbviewer` or `github` viewer. Similarly, `nbconvert` does not know of the LaTeX constructs which are used and therefore do not fully convert notebooks making use of this extension. Therefore, it is necessary to add a post conversion step to conversions provided by `nbconvert`. Though an interface exists for adding post-converters to nbconvert, this (first) author was too lazy and not enough strong to implement the post conversion along these lines. What has be done are simple `bash` and `python` scripts that perform this conversion." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 3.1 Installation" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Copy the scripts files to a directory in your search path, or launch the scripts with the complete path. The two main scripts are `ipynb_thms_to_html` (conversion to html, of course:) and `ipynb_thms_to_latex` (conversion to LaTeX!)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 3.2 Conversion to html" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Requirements**: You will need `perl`, `nodejs`, and `ipython3` (the script calls `ipython3`; if your interpreter is `ipython`, edit the script and replace the different occurences).\n", - "\n", - "The conversion to html is done by something like \n", - "\n", - " [path/]ipynb_thms_to_html filename\n", - "or a list of files such as\n", - "\n", - " [path/]ipynb_thms_to_html *.ipynb\n", - "In turn, this script makes somes substitutions using `perl`, and then uses the `nodesj` javascript interpreter to make the very same substitutions that are done in the live notebook.\n", - "The conversion uses the template `thmsInNb.tpl` (located in the script directory). It also copies the css `latex_env.css` in the directory of the output html file (it must be copied with html files in the case of web upload)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 3.3 Conversion to LaTeX" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Requirements**: You will need `perl` and `ipython3`. \n", - "\n", - "The conversion to LaTeX is done by something like \n", - "\n", - " [path/]ipynb_thms_to_latex filename\n", - "or a list of files such as\n", - "\n", - " [path/]ipynb_thms_to_latex *.ipynb\n", - " \n", - "The script makes some substitutions and cleaning in arkdown cells, then calls the legacy `nbconvert`. Afterward, it runs through the LaTeX environments and converts their contents (which can contain markdown markup) to LaTeX. Note that the script contains a list of the LaTeX environments to process. In the case of the addition of an environment in the main javascript (`thmsInNb.js`), this list must also be updated. \n", - "\n", - "Finally, the script removes the header and footer in the LaTeX file. This is a personnal choice, and the corresponding line can be safely commented. \n", - "\n", - "\\begin{example}\n", - "As for an example, the present document has been converted using\n", - " \n", - " ipynb_thms_to_latex latex_env_doc.ipynb\n", - " \n", - "Then the resulting file (without header/footer) has been included in the main file `documentation.tex`, where some LaTeX definitions of environments are done (namely listings, colors, etc) and compiled using \n", - " \n", - " xelatex documentation\n", - " \n", - "The output can be consulted [here](documentation.pdf). \n", - "\\end{example}" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# 4. Disclaimer, sources and thanks" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This is a not-quick but certainly dirty hack. I am a complete beginner in javascript and of course there are obviously a large amount of possible improvements of the code, in cleaning, factorizing, etc! Language also needs improvement. \n", - "\n", - "**Contributions will be welcome and deeply appreciated.** \n", - "\n", - "Originally, I used a piece of code from the nice online markdown editor `stackedit` [https://github.com/benweet/stackedit/issues/187](https://github.com/benweet/stackedit/issues/187), where the authors also considered the problem of incorporating LaTeX markup in their markdown. I also used examples and code from [https://github.com/ipython-contrib/IPython-notebook-extensions](https://github.com/ipython-contrib/IPython-notebook-extensions). \n" - ] - }, - { - "cell_type": "code", - "execution_count": 101, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "application/javascript": [ - "IPython.load_extensions('latex_envs');" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "%%javascript \n", - "IPython.load_extensions('latex_envs');" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.4.3+" - } - }, - "nbformat": 4, - "nbformat_minor": 0 -} diff --git a/testing/latex_envs/latex_envs.css b/testing/latex_envs/latex_envs.css deleted file mode 100644 index ffa7e4e..0000000 --- a/testing/latex_envs/latex_envs.css +++ /dev/null @@ -1,239 +0,0 @@ - /* - - - - -*/ - - -/***************************************************************** -LaTeX things -*****************************************************************/ - - .latex_tmp {text-align: justify;} - - .latex_prob, - .latex_examp, - .latex_excs, - .latex_problem, - .latex_example, - .latex_exercise, - .latex_proof { - font-style: normal; - text-align: justify; - margin-left: 0px; - margin-right: 10px; - margin-top: 0px; - margin-bottom: 15px; - background-color: #CCFFCC; - display: block; - } - - .latex_title { - float: left; - font-weight: bold; - padding-right: 10px; - } - - .latex_proofend { - float: right; - } - - .latex_listing { - display: block; - text-align: justify; - margin-right: 30px; - font-family: 'Lucida Sans Typewriter'; - color:black; - background-color: GhostWhite ; - } - - .rendered_html pre, .rendered_html code { - border: 0; - background-color: rgba(161, 139, 139, 0); - /* color: #000; */ - font-size: 100%; - padding: 0; - } - - - .latex_thm, .latex_theorem, .latex_lem, .latex_cor, .latex_defn, .latex_prop, .latex_rem, .latex_property, - .latex_lemma, .latex_corollary, .latex_definition, .latex_proposition, .latex_remark, .latex_proof { - - display: block; - text-align: justify; - margin-right: 10px; - margin-left: 0px; - margin-top: 0px; - margin-bottom: 15px; - font-style: italic; - color:black; - background-color: beige; - } - - .latex_textboxa { - display: block; - font-weight: bold; - text-align: center; - width: 80%; - margin: auto; - border: 2px solid; - padding-top: 5px; - padding-bottom: 5px; - background-color: #f2dede; - border-color: #eed3d7; - color: #CC0099; - border-radius: 8px; - -webkit-border-radius: 8px; - -moz-border-radius: 8px; - border-radius: 8px - } - - img.latex_img { - display: block; - margin: auto; - /*height: XXXpx; /* */ - width: 75%; - } - - p.latex_img { - display: block; - width: 85%; - margin: auto; - text-align: justify; - } - -/***************************************************************** -GENERAL CONFIG -*****************************************************************/ - - - @font-face { - font-family: "Computer Modern"; - src: url('http://9dbb143991406a7c655e-aa5fcb0a5a4ec34cff238a2d56ca4144.r56.cf5.rackcdn.com/cmunss.otf'); - } - - @font-face { - font-family: "Computer Modern"; - font-weight: bold; - src: url('http://9dbb143991406a7c655e-aa5fcb0a5a4ec34cff238a2d56ca4144.r56.cf5.rackcdn.com/cmunsx.otf'); - } - @font-face { - font-family: "Computer Modern"; - font-style: oblique; - src: url('http://9dbb143991406a7c655e-aa5fcb0a5a4ec34cff238a2d56ca4144.r56.cf5.rackcdn.com/cmunsi.otf'); - } -*/ - /* @font-face { - font-family: "Computer Modern"; - font-style: Typewriter; - src: url('http://mirrors.ctan.org/fonts/cm-unicode/fonts/otf/cmuntt.otf'); - }*/ - - @font-face { - font-family: "Computer Modern"; - font-weight: bold; - font-style: oblique; - src: url('http://9dbb143991406a7c655e-aa5fcb0a5a4ec34cff238a2d56ca4144.r56.cf5.rackcdn.com/cmunso.otf'); - } - - - div.cell{ - width:100%; - margin-left:auto; /*16% !important;* was preconised but pbs with some browsers*/ - margin-right:auto; - } - h1 { - font-family: Helvetica, serif; - } - h2 { - font-family: Helvetica, serif; - color: darkblue; - } - - h4{ - margin-top:12px; - margin-bottom: 3px; - } - - - .rendered_html p {text-align:justify} - - div.text_cell_render{ - font-family: "Computer Modern", Arial, "Helvetica Neue", Helvetica, Geneva, sans-serif; - line-height: 145%; - font-size: 130%; - color: black; - width:100%; - /*width:800px;*/ - margin-left:0px; - margin-right:auto; - - } - .CodeMirror{ - font-family: "Source Code Pro", source-code-pro,Consolas, monospace; -color: darkblue; - } - -/* commented because many people prefer to have the prompt - .prompt{ - display: None; - } -*/ - -/* -div.output_area -{ - display: block; - margin-left: auto; - margin-right: auto -} -*/ -div.output_subarea.output_text -{ - margin-left: +2%; -} - -div.output_subarea.output_png -{ - margin-left: +10%; -} -div.output_subarea.output_svg -{ - margin-left: +10%; -} - - - .text_cell_render h5 { - font-weight: 300; - font-size: 22pt; - color: #4057A1; - font-style: italic; - margin-bottom: .5em; - margin-top: 0.5em; - display: block; - } - - .warning{ - color: rgb( 240, 20, 20 ) - } - - - diff --git a/testing/latex_envs/latex_envs.js b/testing/latex_envs/latex_envs.js deleted file mode 100644 index 1ad600f..0000000 --- a/testing/latex_envs/latex_envs.js +++ /dev/null @@ -1,178 +0,0 @@ - -/* - -*/ - -var eqNum = 0; // begins equation numbering at eqNum+1 -var eqLabelWithNumbers = true; //if true, label equations with equation numbers; otherwise using the tag specified by \label -var conversion_to_html = false; - - - -//var run_this = function() { - -define(["require", "/nbextensions/thmsInNb.js"], function (require,thmsInNb) { - - var maps = initmap(); - environmentMap=maps[0]; - cmdsMap=maps[1]; - eqLabNums=maps[2]; - - - - //define(["require"], function (require) { - var load_css = function(name) { - var link = document.createElement("link"); - link.type = "text/css"; - link.rel = "stylesheet"; - link.href = require.toUrl(name); - //link.href = name; - document.getElementsByTagName("head")[0].appendChild(link); - - }; - - var load_ipython_extension = function() { - require(['components/marked/lib/marked'], function(marked) { - "use strict"; - if (IPython.version[0] <= 2) { - console.log("This extension requires IPython >= 2.x") - return - } - - var security = IPython.security; - var _on_reload = true; /* make sure cells render on reload */ - - - - - /* Override original markdown render function */ - /* The idea was took from python-markdown extension https://gist.github.com/juhasch/c37408a0d79156f28c17#file-python-markdown-js */ - - // This used to work in IPython 2.x - - /* IPython.MarkdownCell.prototype.render = function() { - var cont = IPython.TextCell.prototype.render.apply(this); - console.log("result of textcell prototype",cont) - - cont = cont || IPython.notebook.dirty || _on_reload - if (cont) { - console.log("overriding markdown cell renderer") - var text = this.get_text(); - var math = null; - if (text === "") { - text = this.placeholder; - } - var text_and_math = IPython.mathjaxutils.remove_math(text); - text = text_and_math[0]; - math = text_and_math[1]; - console.log("text",text) - var html = marked.parser(marked.lexer(text)); - html = IPython.mathjaxutils.replace_math(html, math); - html = thmsInNbConv(html); //<----- thmsInNb patch here - html = security.sanitize_html(html); - console.log("html",html) - html = $($.parseHTML(html)); - // links in markdown cells should open in new tabs - html.find("a[href]").not('[href^="#"]').attr("target", "_blank"); - this.set_rendered(html); - this.element.find('div.input_area').hide(); - this.element.find("div.text_cell_render").show(); - this.typeset(); - - } - return cont - };*/ - - // for IPython v 3 - IPython.MarkdownCell.prototype.render = function () { - var cont = IPython.TextCell.prototype.render.apply(this); - if (cont || IPython.notebook.dirty || _on_reload) { - var that = this; - var text = this.get_text(); - var math = null; - if (text === "") { text = this.placeholder; } - var text_and_math = IPython.mathjaxutils.remove_math(text); - text = text_and_math[0]; - math = text_and_math[1]; - marked(text, function (err, html) { - html = IPython.mathjaxutils.replace_math(html, math); - html = thmsInNbConv(marked,html); //<----- thmsInNb patch here - html = security.sanitize_html(html); - html = $($.parseHTML(html)); - // add anchors to headings - html.find(":header").addBack(":header").each(function (i, h) { - h = $(h); - var hash = h.text().replace(/ /g, '-'); - h.attr('id', hash); - h.append( - $('') - .addClass('anchor-link') - .attr('href', '#' + hash) - .text('¶') - ); - }); - // links in markdown cells should open in new tabs - html.find("a[href]").not('[href^="#"]').attr("target", "_blank"); - that.set_rendered(html); - that.typeset(); - that.events.trigger("rendered.MarkdownCell", {cell: that}); - }); - } - return cont; - }; - - - - var init_cells = function() { - - var ncells = IPython.notebook.ncells(); - var cells = IPython.notebook.get_cells(); - var maps = initmap(); // this is to reset the counters in case of reload - environmentMap=maps[0]; cmdsMap=maps[1]; eqLabNums=maps[2]; - eqNum = 0; - console.log("reloading cells"); - for (var i = 0; i < ncells; i++) { - var cell = cells[i]; - if (cell instanceof IPython.TextCell) { - cell.render();}; - } - } - init_cells(); - - /* on reload */ - $([IPython.events]).on('status_started.Kernel', function() { - - init_cells(); - _on_reload = false; - }) - - - IPython.toolbar.add_buttons_group([ - { - id : 'doReload', - label : 'latex_envs: Refresh rendering ', - icon : 'fa-retweet', - callback : init_cells - } - ]); - - - - }); - }; - - console.log("Loading latex_envs.css"); - - //load_css('/nbextensions/latex_envs.css') - load_css('./latex_envs.css') - - - - //load_ipython_extension(); - return { - load_ipython_extension: load_ipython_extension, - }; -}); //End of run_this - -//run_this(); -console.log("Loading ./latex_envs.js"); diff --git a/testing/latex_envs/latex_envs.yaml b/testing/latex_envs/latex_envs.yaml deleted file mode 100644 index ff129f4..0000000 --- a/testing/latex_envs/latex_envs.yaml +++ /dev/null @@ -1,7 +0,0 @@ -Type: IPython Notebook Extension -Name: (some) LaTeX environments for Jupyter -Description: Enable to use laTeX environments in Jupyter's markdown cells -Link: https://github.com/jfbercher/IPython-notebook-extensions/tree/master/testing/latex_envs/ -Icon: icon.png -Main: latex_envs.js -Compatibility: 3.x diff --git a/testing/latex_envs/readme.md b/testing/latex_envs/readme.md deleted file mode 100644 index 855ceb7..0000000 --- a/testing/latex_envs/readme.md +++ /dev/null @@ -1,51 +0,0 @@ -# (some) LaTeX environments for Jupyter notebook - -This extension enables to use some LaTeX structures directly in markdown cells of the notebook. Supported structures include - -- theorems like structures: theorem, lemma, corollary, definition, example, problem, ... -- itemize, enumerate, ... - -More environments can be simply added in the source file (`thsInNb.js`). - -An automatic numbering of environments is implemented. Labels, cross-references and links between environments and equations are supported. - -In addition, the extension also enables to use simple LaTeX markup such as \textit{}, \textbf{}, \textem{}, \underline{}, etc. -This is useful for copying snippets of text to/from a LaTeX file. -The rendering of the LaTeX structures (theorems, definitions, exercises..) can be tailored via the stylesheet `latex_envs.css` - -The `conversion` directory contains scripts for converting the notebooks to html and LaTeX while taking into account the structures -enabled by the extension. Theses scripts require nodejs, perl, ipython3. - -# Installation - -You should follow the instructions in the wiki. A manual installation consists in copying latex_envs.js, thmsInNb.js, latex_envs.css to -the notebook extension directory, usually ~/.ipython/nbextensions. -Copy the scripts in conversion/ to some directory (preferably in your path). -Either load the extension from your `custom.js` or use a code cell with - - - %%javascript - IPython.load_extensions('latex_envs'); - - -# Demo/documentation - -A demo notebook `latex_env_doc.ipynb` is provided. Its html version is [latex_env_doc.html](https://rawgit.com/jfbercher/IPython-notebook-extensions/3.x/testing/latex_envs/latex_env_doc.html) and a pdf resulting -from conversion to LaTeX is available as `documentation.pdf`. Code needs improvements. -**Contributions, comments, issues are most welcome and will be deeply appreciated.** - -The original idea and starting code come from a discussion here: [https://github.com/benweet/stackedit/issues/187](https://github.com/benweet/stackedit/issues/187). - - -## Files - -File | description ------------------------ | ----------------------------- -conversion | Directory containing utilitary files for converting the notebook to html/LaTeX -documentation.pdf | Documentation -latex_env_doc.html | Documentation and demo notebook (html) version -latex_env_doc.ipynb | Documentation and demo notebook -latex_envs.css | Stylesheet for rendering the notebook/html -latex_envs.js | LaTeX_envs extension (main script) -thmsInNb.js | LaTeX_envs extension (does the actual conversion) -readme.md | This file. diff --git a/testing/latex_envs/thmsInNb.js b/testing/latex_envs/thmsInNb.js deleted file mode 100644 index d983339..0000000 --- a/testing/latex_envs/thmsInNb.js +++ /dev/null @@ -1,271 +0,0 @@ - -/* -This script goes through the input text (actually it is triggered each time a markdown cell is rendered. The imput text is the content of the cell. -It replaces the latex structures by html tags, typically wit a
foo - var cmdsMap = { - underline: { replacement: "u" }, - textit: { replacement: "i" }, - textbf: { replacement: "b" }, - textem: { replacement: "em" }, - section: { replacement: "h1" }, - subsection: { replacement: "h2" }, - } - return [environmentMap, cmdsMap, eqLabNums] -} - -var maps = initmap(); -environmentMap=maps[0]; -cmdsMap=maps[1]; -eqLabNums=maps[2]; - - - - -/*********/ - -function thmsInNbConv(marked,text) { - - var listings = []; - - { //**************************************************************************** - var EnvReplace = function(message) { - //console.log(message); - - //Look for pairs [ ] - var message = message.replace(/^(?:

)?\[([\s\S]*?)^(?:

)?\]/gm, - function(wholeMatch, m1) { - //return "\\["+m1+"\\]"; - m1 = m1.replace(/<[/]?em>/g, "_"); //correct possible incorrect md remplacements in eqs - m1 = m1.replace(/left{/g, "left\\{"); //correct possible incorrect md remplacements in eqs - return "\\[" + m1 + "\\]"; - } - ); - - var message = message.replace(/(?:

)?([$]{1,2})([\s\S]*?)(?:

)?\1/gm, - function(wholeMatch, m1) { - //return "\\["+m1+"\\]"; - wholeMatch = wholeMatch.replace(/<[/]?em>/g, "_"); //correct possible incorrect md remplacements in eqs - wholeMatch = wholeMatch.replace(/left{/g, "left\\{"); //correct possible incorrect md remplacements in eqs - return wholeMatch; - } - ); - - - var out = message.replace(/\\begin{(\w+)}([\s\S]*?)\\end{\1}/gm, function(wholeMatch, m1, m2) { - - - //if(!environmentMap[m1]) return wholeMatch; - var environment = environmentMap[m1]; - if (!environment) return wholeMatch; - - - var title = environment.title; - if (environment.counter) { - environment.counter.num++; - title += ' ' + environment.counter.num; - } - //The conversion machinery (see marked.js or mathjaxutils.js) extracts text and math and converts text to markdown. - //Here, we also want to convert thm like env. - //So we do it here. However, environments with blank lines are *not* extracted before and thus already converted. - // Thus we avoid to process them again. - // Try to check if there is remaining Markdown - // |\n\s-[\s]*(\w+)/gm - // /\*{1,2}([\s\S]*?)\*{1,2}|\_{1,2}([\s\S]*?)\_{1,2}/gm) - if (m2.match(/\*{1,2}([\s\S]*?)\*{1,2}|\_{1,2}([\S]*?)\_{1,2}|```/gm)) { - var m2 = marked.parser(marked.lexer(m2)); - } - - - var result = '' + title + '

' + m2; - - // case of the figure environment. We look for an \includegraphics directive, gobble its parameters except the image name, - // look for a caption and a label and construct an image representation with a caption and an anchor. Style can be customized - // via the class latex_img - - if (m1 == "figure") { - - var caption = /\\caption{([\s\S]*?)}/gm.exec(m2)[1]; - var graphic = /\\includegraphics(?:[\S\s]*?){([\s\S]*?)}/gm.exec(m2)[1]; - var label = m2.match(//gm); - if (!caption.match(//gm)) {caption=label+caption}; - - var result = '

' + title+': ' + caption + '

'; - }; - - - - if (m1 == "proof") { - result += ''; - } - - if (m1 == "itemize") { - var result = "
    " + m2.replace(/\\item/g, "
  • ") + "
"; - }; - - if (m1 == "enumerate") { - var result = "
    " + m2.replace(/\\item/g, "
  1. ") + "
"; - }; - - if (m1 != "listing") { - result = EnvReplace(result); - }; //try to do further replacements - - return result + '
'; - }); - //out = EnvReplace(out); - - return out; //} - - } - } - //********************************************************************************** - // What follows is done on the whole text, environments included: - // - substitutions of labels with anchors - // - substitutions of ref with links - // - LaTeX commands (textbf, textit, etc) replaced by html tags - - // We want to preserve a "listing" environment from **any modification** - // therefore we remove them and insert them back at the end - - var remove_listing = function (text) { - text = text.replace(/\\begin{listing}([\s\S]*?)\\end{listing}/gm, function(wholeMatch, m1) { - listings.push(m1); - return '!@!Listing'+listings.length+'!@!'; //originallistings location are marked by !@!Listingn!@!, n being the index of listing - }); - - return text; - }; - - text = remove_listing(text) - - - // Now we can do our stuff - - - { - // This is to replace references by links to the correct environment, - //while preserving links to equations - // which are worked out by MathJax - - //LABELS - var text = text.replace(/\\label{(\S+):(\S+)}/g, function(wholeMatch, m1, m2) { - m2 = m2.replace(/<[/]?em>/g, "_"); - if (m1 == "eq") { - if (conversion_to_html) { - /* if (eqLabelWithNumbers) { - eqNum++; - return wholeMatch + '\\tag{'+eqNum+'}' ; - */ - return wholeMatch; //+ '\\tag{'+m1+':'+m2+'}' ; - } else { - if (eqLabelWithNumbers) { - eqNum++; - //return '
' + '['+m1+':'+m2+']' + '' + '\\tag{'+eqNum+'}' ; - eqLabNums[m2] = eqNum.toString(); - - return '\\tag{' + eqNum + '}' + '' ; - } - return '\\tag{' + m2 + '}' + ''; - }; - } - return '' + '[' + m1 + ':' + m2 + ']' + ''; - }); - - - //REFERENCES - var text = text.replace(/\\ref{(\S+):(\S+)}/g, function(wholeMatch, m1, m2) { - m2 = m2.replace(/<[/]?em>/g, "_"); - if (conversion_to_html) { - if (m1 == "eq") return wholeMatch; - } else { - if (m1 == "eq") { - if (eqLabelWithNumbers) { - return eqLabNums[m2]; - } else return m1 + ':' + m2; - } - } - - return '' + '[' + m1 + ':' + m2 + ']' + ''; - }); - - - - { - - - text = EnvReplace(text); - - // LaTeX commands replacements (eg \textbf, \texit, etc) - var text = text.replace(/\\([\w]*){(.+?)}/g, function(wholeMatch, m1, m2) { - - var cmd = cmdsMap[m1]; - if (!cmd) return wholeMatch; - var tag = cmd.replacement; - return '<' + tag + '>' + m2 + ''; - }); - - //Other small replacements - var text = text.replace(/\\index{(.+?)}/g, function(wholeMatch, m1) { - return ''; - }); - var text = text.replace(/\\noindent/g, ""); - var text = text.replace(/\\(?:<\/p>)/g, "

"); - - - - }; - - }; - - //insert back listings in the text - - text = text.replace(/!@!Listing(\d+)!@!/gm, function(wholeMatch, n) { - return '
' + listings[n-1] + '
'; - }); - - return text; - - };

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 Ua%E-;F*h|cFgOY&B}Gq03TeGV9{>OV diff --git a/testing/latex_envs/example.png b/testing/latex_envs/example.png deleted file mode 100644 index 2433079d57ab24d7c1b08203c59ac64d8de04ae5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3941 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 NX9qX?@?)27{0mY^J>~!a diff --git a/testing/latex_envs/icon.png b/testing/latex_envs/icon.png deleted file mode 100644 index fd214a3b0efbee6695ab18d77402d2e28c00b39f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57045 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 diff --git a/testing/latex_envs/latex_env_doc.html b/testing/latex_envs/latex_env_doc.html deleted file mode 100644 index cbb5b0a..0000000 --- a/testing/latex_envs/latex_env_doc.html +++ /dev/null @@ -1,1459 +0,0 @@ - - - - -[] - - - - - - - - - - - - - - - - - - - - - - - -