summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/cnltx/cnltx-example.sty
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/cnltx/cnltx-example.sty')
-rw-r--r--Master/texmf-dist/tex/latex/cnltx/cnltx-example.sty123
1 files changed, 101 insertions, 22 deletions
diff --git a/Master/texmf-dist/tex/latex/cnltx/cnltx-example.sty b/Master/texmf-dist/tex/latex/cnltx/cnltx-example.sty
index cdc72321c06..ce75c9b1cd0 100644
--- a/Master/texmf-dist/tex/latex/cnltx/cnltx-example.sty
+++ b/Master/texmf-dist/tex/latex/cnltx/cnltx-example.sty
@@ -8,7 +8,7 @@
% Web: https://github.com/cgnieder/cnltx/
% E-Mail: contact@mychemistry.eu
% --------------------------------------------------------------------------
-% Copyright 2013 Clemens Niederberger
+% Copyright 2013-2014 Clemens Niederberger
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
@@ -166,6 +166,7 @@
\newarg\darg{(}{)}
\newarg[\code]\Darg{(}{)}
\newcommand*\sarg{\textcolor{argument}{\code{*}}}
+\newcommand*\parg{\textcolor{argument}{\code{+}}}
% --------------------------------------------------------------------------
% source code examples:
@@ -278,7 +279,8 @@
% control sequences that won't be indexed:
texcsstyle = [6]\color{cs},
index = [6][texcs6],
- indexstyle = [6]\@gobble
+ indexstyle = [6]\@gobble,
+ moredelim = *[s][\color{math}]{$}{$}
}
\def\cnltx@bibtex@listings@style{
@@ -402,17 +404,21 @@
}
\def\cnltx@local@listings@options{}
+\newbool{cnltx@local@sourcecode@overwrite}
\pgfkeys{
cnltx/.cd,
- gobble/.code = \def\cnltx@gobble{#1} ,
- add-cmds/.code = \cnltx@addcmds{#1} ,
- add-silent-cmds/.code = \cnltx@addsilentcmds{#1} ,
- add-listings-options/.code = \cnltx@addlistingsoptions{#1} ,
- listings-options/.code = \lstdefinestyle{cnltx}{#1} ,
- add-envs/.code = \cnltx@addenvs{#1} ,
- add-silent-envs/.code = \cnltx@addsilentenvs{#1} ,
- sourcecode-options/.code = \def\cnltx@local@listings@options{#1} ,
+ gobble/.code = \def\cnltx@gobble{#1} ,
+ add-cmds/.code = \cnltx@addcmds{#1} ,
+ add-silent-cmds/.code = \cnltx@addsilentcmds{#1} ,
+ add-listings-options/.code = \cnltx@addlistingsoptions{#1} ,
+ listings-options/.code = \lstdefinestyle{cnltx}{#1} ,
+ add-envs/.code = \cnltx@addenvs{#1} ,
+ add-silent-envs/.code = \cnltx@addsilentenvs{#1} ,
+ add-sourcecode-options/.code = \def\cnltx@local@listings@options{#1} ,
+ sourcecode-options/.code =
+ \booltrue{cnltx@local@sourcecode@overwrite}
+ \def\cnltx@local@listings@options{#1}
}
\def\cnltx@mdframed@options
@@ -431,6 +437,9 @@
{\expandonce\cnltx@mdframed@options,\unexpanded{#1}}%
}
+\def\cnltx@local@frame@options{}
+\newbool{cnltx@local@frame@overwrite}
+
\newbool {cnltx@sidebyside}
\newbool {cnltx@codeleft}
\booltrue{cnltx@codeleft}
@@ -438,6 +447,7 @@
\newbool {cnltx@compile}
\newbool {cnltx@float}
\newbool {cnltx@pagelist}
+\newbool {cnltx@outside}% use this to allow floating material in the examples
\newsavebox\cnltx@example@box
@@ -480,6 +490,10 @@
after-output/.code = \def\cnltx@after@example@hook{#1} ,
add-frame-options/.code = \cnltx@addmdframedoptions{#1} ,
frame-options/.code = \mdfdefinestyle{cnltx}{#1} ,
+ add-local-frame/.code = \def\cnltx@local@frame@options{#1} ,
+ local-frame/.code =
+ \booltrue{cnltx@local@frame@overwrite}
+ \def\cnltx@local@frame@options{#1} ,
gobble/.code = \def\cnltx@gobble{#1} ,
max-pages/.code = \setcounter{cnltx@maxpages}{#1} ,
max-height/.code = \def\cnltx@image@max@height{#1} ,
@@ -506,10 +520,16 @@
}
\cnltx@init@float ,
float/.default = true ,
+ float-env/.code = \def\cnltx@float@type{#1} ,
caption/.code =
\booltrue{cnltx@float}%
\renewcommand\cnltx@float@caption{#1} ,
- float-pos/.code = \def\cnltx@float@pos{[#1]}\cnltx@init@float
+ float-pos/.code = \def\cnltx@float@pos{[#1]}\cnltx@init@float ,
+ outside/.is if = cnltx@outside ,
+ add-frame/.is choice ,
+ add-frame/true/.code = \def\cnltx@adjustbox@frame{frame} ,
+ add-frame/false/.code = \def\cnltx@adjustbox@frame{} ,
+ add-frame/.default = true
}
\newcommand*\cnltx@get@page@list[1]{%
@@ -608,15 +628,55 @@
\newcommand*\cnltx@example@start[1]{%
\pgfqkeys{/cnltx}{#1}%
- \cnltx@expandargs(x)\lstset{
- style=cnltx,
- \expandonce\cnltx@local@listings@options
- }%
- \ifbool{cnltx@sidebyside}
- {\mdframed[style=cnltx,nobreak=true]}
- {\mdframed[style=cnltx,nobreak=false]}%
+ \ifbool{cnltx@local@sourcecode@overwrite}
+ {%
+ \cnltx@expandargs(x)\lstset{
+ \expandonce\cnltx@local@listings@options
+ }%
+ }
+ {%
+ \cnltx@expandargs(x)\lstset{
+ style=cnltx,
+ \expandonce\cnltx@local@listings@options
+ % no idea why this is necessary:
+ % \ifcsdef{lst@gtexcs3}{}{,moretexcs=[3]}%
+ }%
+ }%
+ \ifbool{cnltx@local@frame@overwrite}
+ {%
+ \cnltx@expandargs(nxx)%
+ \ifbool{cnltx@sidebyside}
+ {%
+ \noexpand\mdframed[
+ \expandonce\cnltx@local@frame@options,
+ nobreak=true]
+ }
+ {%
+ \noexpand\mdframed[
+ \expandonce\cnltx@local@frame@options,
+ nobreak=false]
+ }%
+ }
+ {%
+ \cnltx@expandargs(nxx)%
+ \ifbool{cnltx@sidebyside}
+ {%
+ \noexpand\mdframed[
+ style=cnltx,
+ \expandonce\cnltx@local@frame@options,
+ nobreak=true]
+ }
+ {%
+ \noexpand\mdframed[
+ style=cnltx,
+ \expandonce\cnltx@local@frame@options,
+ nobreak=false]
+ }%
+ }%
}
+\newcommand*\cnltx@adjustbox@frame{frame}
+
% #1: filename
% #2: number of pages
% #3: current page
@@ -630,7 +690,7 @@
}%
\ifblank{#3}{}{%
\adjustbox{
- frame,
+ \cnltx@adjustbox@frame,
max width = \cnltx@tmpa@length ,
max height = \cnltx@image@max@height
}{%
@@ -677,7 +737,8 @@
\ifboolexpr
{
bool {cnltx@codeonly} or
- bool {cnltx@compile}
+ bool {cnltx@compile} or
+ bool {cnltx@outside}
}
{}
{% direct input of code example
@@ -753,7 +814,7 @@
}
{%
\cnltx@example@warning
- {`shellescape' or `write18' nor enabled -- I'm not compiling}%
+ {`shell-escape' or `write18' not enabled -- I'm not compiling}%
}%
\IfFileExists{#1.\cnltx@example@fileext}
{%
@@ -808,7 +869,16 @@
}
{\endmdframed}%
}%
- {\endmdframed}%
+ {%
+ \endmdframed
+ \ifbool{cnltx@outside}
+ {%
+ \cnltx@pre@example@hook
+ \cnltx@example@input{#1.code}%
+ \cnltx@after@example@hook
+ }
+ {}%
+ }%
\ignorespacesafterend
}
@@ -953,5 +1023,14 @@ HISTORY:
runs of the included example
- new options `program' and `exe-with'
- new option `float', `float-pos' and `caption'
+2014/01/05 v0.10 - sometimes there is a spurious `undefined control sequence
+ \lst@gtexcs3' error: added hack to fix this => find out
+ where this comes from!
+ - new option `add-frame' for `compile'd examples
+ - new command \parg for an optional + argument
+ - new option `outside' for non-`compiled' examples
+ - new option `float-env'
+
+TODO: