summaryrefslogtreecommitdiff
path: root/macros/latex
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2022-04-25 03:01:49 +0000
committerNorbert Preining <norbert@preining.info>2022-04-25 03:01:49 +0000
commit4688b855bb6f8b817901a7c777e8aecd1a189622 (patch)
treeaa75c3ff4a3d691e41b2cffe0c37824cfa435230 /macros/latex
parent525912b963dd339500c863995e046af658dbdcf6 (diff)
CTAN sync 202204250301
Diffstat (limited to 'macros/latex')
-rw-r--r--macros/latex/contrib/create-theorem/create-theorem-doc.pdfbin119390 -> 120072 bytes
-rw-r--r--macros/latex/contrib/create-theorem/create-theorem-doc.tex20
-rw-r--r--macros/latex/contrib/create-theorem/create-theorem.sty139
-rw-r--r--macros/latex/contrib/easybook/easybook.dtx6
-rw-r--r--macros/latex/contrib/easybook/easybook.pdfbin591552 -> 591558 bytes
-rw-r--r--macros/latex/contrib/easybook/easybook.tex4
-rw-r--r--macros/latex/contrib/hvextern/Changes4
-rw-r--r--macros/latex/contrib/hvextern/README17
-rw-r--r--macros/latex/contrib/hvextern/doc/hvextern.pdfbin0 -> 1041665 bytes
-rw-r--r--macros/latex/contrib/hvextern/doc/hvextern.tex1403
-rw-r--r--macros/latex/contrib/hvextern/latex/hvextern-context.cfg22
-rw-r--r--macros/latex/contrib/hvextern/latex/hvextern-latex.cfg31
-rw-r--r--macros/latex/contrib/hvextern/latex/hvextern-lua.cfg22
-rw-r--r--macros/latex/contrib/hvextern/latex/hvextern-mp.cfg32
-rw-r--r--macros/latex/contrib/hvextern/latex/hvextern-pl.cfg22
-rw-r--r--macros/latex/contrib/hvextern/latex/hvextern-py.cfg27
-rw-r--r--macros/latex/contrib/hvextern/latex/hvextern-tex.cfg30
-rw-r--r--macros/latex/contrib/hvextern/latex/hvextern.sty332
-rw-r--r--macros/latex/contrib/llncsconf/CHANGELOG.md18
-rw-r--r--macros/latex/contrib/llncsconf/README.md88
-rw-r--r--macros/latex/contrib/llncsconf/example/example.tex (renamed from macros/latex/contrib/llncsconf/example.tex)3
-rw-r--r--macros/latex/contrib/llncsconf/example/example_accepted_crop.pdfbin0 -> 118430 bytes
-rw-r--r--macros/latex/contrib/llncsconf/example/example_accepted_nocrop.pdfbin0 -> 118411 bytes
-rw-r--r--macros/latex/contrib/llncsconf/example/example_intended_crop.pdfbin0 -> 131639 bytes
-rw-r--r--macros/latex/contrib/llncsconf/example/example_intended_nocrop.pdfbin0 -> 131626 bytes
-rw-r--r--macros/latex/contrib/llncsconf/example/example_llncs_crop.pdfbin0 -> 131996 bytes
-rw-r--r--macros/latex/contrib/llncsconf/example/example_llncs_nocrop.pdfbin0 -> 131977 bytes
-rw-r--r--macros/latex/contrib/llncsconf/example/example_proceedings_crop.pdfbin0 -> 125447 bytes
-rw-r--r--macros/latex/contrib/llncsconf/example/example_proceedings_nocrop.pdf (renamed from macros/latex/contrib/llncsconf/example.pdf)bin123034 -> 125428 bytes
-rw-r--r--macros/latex/contrib/llncsconf/example/example_submitted_crop.pdfbin0 -> 131793 bytes
-rw-r--r--macros/latex/contrib/llncsconf/example/example_submitted_nocrop.pdfbin0 -> 131776 bytes
-rw-r--r--macros/latex/contrib/llncsconf/llncsconf.sty33
-rw-r--r--macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdfbin478856 -> 487568 bytes
-rw-r--r--macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex99
-rw-r--r--macros/latex/contrib/proflycee/tex/ProfLycee.sty73
-rw-r--r--macros/latex/contrib/rec-thy/README2
-rw-r--r--macros/latex/contrib/rec-thy/rec-thy.pdfbin127739 -> 127698 bytes
-rw-r--r--macros/latex/contrib/rec-thy/rec-thy.sty93
-rw-r--r--macros/latex/contrib/rec-thy/rec-thy.tex8
-rwxr-xr-xmacros/latex/contrib/uspace/uspace-ctanify.sh6
-rw-r--r--macros/latex/contrib/uspace/uspace-test-lualatex.pdfbin146331 -> 34081 bytes
-rw-r--r--macros/latex/contrib/uspace/uspace-test-pdflatex.pdfbin146770 -> 153067 bytes
-rw-r--r--macros/latex/contrib/uspace/uspace-test-xelatex.pdfbin27383 -> 32541 bytes
-rw-r--r--macros/latex/contrib/uspace/uspace.pdfbin82555 -> 74129 bytes
-rw-r--r--macros/latex/contrib/uspace/uspace.sty7
-rw-r--r--macros/latex/contrib/uspace/uspace.tex16
-rw-r--r--macros/latex/contrib/zref-vario/CHANGELOG.md7
-rw-r--r--macros/latex/contrib/zref-vario/MANIFEST.md150
-rw-r--r--macros/latex/contrib/zref-vario/zref-vario-code.pdfbin570783 -> 570457 bytes
-rw-r--r--macros/latex/contrib/zref-vario/zref-vario-code.tex2
-rw-r--r--macros/latex/contrib/zref-vario/zref-vario.dtx18
-rw-r--r--macros/latex/contrib/zref-vario/zref-vario.ins4
-rw-r--r--macros/latex/contrib/zref-vario/zref-vario.pdfbin143880 -> 143334 bytes
-rw-r--r--macros/latex/contrib/zref-vario/zref-vario.tex19
54 files changed, 2474 insertions, 283 deletions
diff --git a/macros/latex/contrib/create-theorem/create-theorem-doc.pdf b/macros/latex/contrib/create-theorem/create-theorem-doc.pdf
index 0d2a1a19bb..e3472c1750 100644
--- a/macros/latex/contrib/create-theorem/create-theorem-doc.pdf
+++ b/macros/latex/contrib/create-theorem/create-theorem-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/create-theorem/create-theorem-doc.tex b/macros/latex/contrib/create-theorem/create-theorem-doc.tex
index e6f8b84538..e6d06817e6 100644
--- a/macros/latex/contrib/create-theorem/create-theorem-doc.tex
+++ b/macros/latex/contrib/create-theorem/create-theorem-doc.tex
@@ -97,7 +97,7 @@
\begin{document}
-\def\PackageVersion{2022/04/16}
+\def\PackageVersion{2022/04/23}
\title{\createtheorempackage{}\\\smallskip\itshape Initializing theorem-like environments with multilingual support}
\author{Jinwen XU}
@@ -138,12 +138,12 @@ It has the following options:
% \end{itemize}
\item \packageoption{name as context}
\begin{itemize}
- \item When referencing, the names correspond to the current language context. For example, the English names will be displayed when referencing a theorem-like environment in English context, no matter which language context the original environment is in.
+ \item When referencing, the resulted names correspond to the current context. For example, the English names will be displayed when referencing a theorem-like environment in English context, no matter which linguistic context the original environment is in.
\item Synonymous names: \packageoption{name-as-context} \,$|$\, \packageoption{nameascontext} \,$|$\, \packageoption{regionalref}
\end{itemize}
\item \packageoption{name as is}
\begin{itemize}
- \item When referencing, the names correspond to the language contexts in which the environments are defined. For example, if the environment is defined in English context, then the English names will be displayed when referencing it, regardless of the current language context.
+ \item When referencing, the resulted names correspond to the contexts in which the corresponding environments appeared. For example, if the environment is written in an English context, then it shall always be the English names displayed when referencing it, regardless of the current linguistic context.
\item Synonymous names: \packageoption{name-as-is} \,$|$\, \packageoption{nameasis} \,$|$\, \packageoption{originalref}
\end{itemize}
\item \packageoption{name in link}
@@ -160,7 +160,7 @@ It has the following options:
\section{How to use it}
-\subsection[Naming theorem-like environments]{Naming theorem-like environments with \texttt{\textbackslash\textcolor{code-main}{NameTheorem}}}
+\subsection[Naming theorem-like environments]{Naming theorem-like environments with \texttt{\textcolor{code-main}{\textbackslash NameTheorem}}}
The syntax of \lstinline|\NameTheorem| is as follows:
\begin{code}
@@ -238,7 +238,7 @@ Supported keys are:
\end{tip}
-\subsection[Initializing theorem-like environments]{Initializing theorem-like environments with \texttt{\textbackslash\textcolor{code-main}{CreateTheorem}}}
+\subsection[Initializing theorem-like environments]{Initializing theorem-like environments with \texttt{\textcolor{code-main}{\textbackslash CreateTheorem}}}
The syntax of \lstinline|\CreateTheorem| is as follows:
\begin{code}
@@ -295,7 +295,7 @@ Supported keys are:
\end{itemize}
\begin{tip}
- The names for the following environments have been preset: \texttt{application}, \texttt{assertion}, \texttt{assumption}, \texttt{axiom}, \texttt{conclusion}, \texttt{conjecture}, \texttt{convention}, \texttt{corollary}, \texttt{definition}, \texttt{example}, \texttt{exercise}, \texttt{fact}, \texttt{hypothesis}, \texttt{lemma}, \texttt{notation}, \texttt{observation}, \texttt{postulate}, \texttt{problem}, \texttt{property}, \texttt{proposition}, \texttt{question}, \texttt{remark} and \texttt{theorem}. If you are fine with the preset names, then there is no need to specify the key \textquote{\commandoption{name}} while creating them, otherwise you shall have to use the package option \textquote{\packageoption{no preset names}} to disable the presets and then define your own ones.
+ The names for the following environments have been preset: \texttt{application}, \texttt{assertion}, \texttt{assumption}, \texttt{axiom}, \texttt{claim}, \texttt{conclusion}, \texttt{conjecture}, \texttt{construction}, \texttt{convention}, \texttt{corollary}, \texttt{definition}, \texttt{example}, \texttt{exercise}, \texttt{fact}, \texttt{hypothesis}, \texttt{lemma}, \texttt{notation}, \texttt{observation}, \texttt{postulate}, \texttt{problem}, \texttt{property}, \texttt{proposition}, \texttt{question}, \texttt{recall}, \texttt{remark} and \texttt{theorem}. If you are fine with the preset names, then there is no need to specify the key \textquote{\commandoption{name}} while creating them, otherwise you shall have to use the package option \textquote{\packageoption{no preset names}} to disable the presets and then define your own ones.
\end{tip}
\medskip
@@ -304,7 +304,7 @@ Please note that, by default, an normal environment \meta{env} and its starred r
\bigskip
-\subsection[Configuring theorem-like environments]{Configuring theorem-like environments with \texttt{\textbackslash\textcolor{code-main}{SetTheorem}}}
+\subsection[Configuring theorem-like environments]{Configuring theorem-like environments with \texttt{\textcolor{code-main}{\textbackslash SetTheorem}}}
The previous two commands are especially useful for package or class writers, while this one is more for the users. If you are not satisfied with preset name styles or numbering settings, then even after initializing the environments, you can still further configure them by means of \lstinline|\SetTheorem|, the syntax of which is as follows:
@@ -381,11 +381,11 @@ This is not exciting at all. Now, let's say we are writing a bilingual note in E
\CreateTheorem{idea}{
(*\commandoption{name}*) = {
(*\commandoption{heading}*) = { english = Idea,
- french = Idée, },
+ french = Idée, },
(*\commandoption{crefname}*) = { english = {idea}{ideas},
- french = [l']{idée}[les]{idées}, },
+ french = [l']{idée}[les]{idées}, },
(*\commandoption{Crefname}*) = { english = {Idea}{Ideas},
- french = [L']{idée}[Les]{idées}, },
+ french = [L']{idée}[Les]{idées}, },
},
(*\commandoption{parent counter}*) = section,
}
diff --git a/macros/latex/contrib/create-theorem/create-theorem.sty b/macros/latex/contrib/create-theorem/create-theorem.sty
index 73d9302416..fefe7a6119 100644
--- a/macros/latex/contrib/create-theorem/create-theorem.sty
+++ b/macros/latex/contrib/create-theorem/create-theorem.sty
@@ -13,7 +13,7 @@
\RequirePackage{l3keys2e}
\ProvidesExplPackage
{create-theorem}
- {2022/04/16} {}
+ {2022/04/23} {}
{Initializing theorem-like environments with multilingual support}
\keys_define:nn { create-theorem }
@@ -512,7 +512,7 @@
% #2 = language name
% #3 = corresponding numbering style
{
- \tl_gset:cn { g_crthm_number_style_ #1 _tl } { #3 }
+ \tl_gset:cn { g_crthm_number_style_ #1 _tl } { \normalfont #3 }
}
@@ -901,7 +901,7 @@
, spanish = Aserción
, schinese = 断言
, tchinese = 斷言
- , japanese = アサーション
+ , japanese = 断言
, russian = Утверждение
}
, crefname = {
@@ -914,7 +914,7 @@
, spanish = [la]{aserción}[las]{aserciones}
, schinese = {断言}{断言}
, tchinese = {斷言}{斷言}
- , japanese = {アサーション}{アサーション}
+ , japanese = {断言}{断言}
, russian = {утверждение}{утверждения}
}
, Crefname = {
@@ -927,7 +927,7 @@
, spanish = [La]{aserción}[Las]{aserciones}
, schinese = {断言}{断言}
, tchinese = {斷言}{斷言}
- , japanese = {アサーション}{アサーション}
+ , japanese = {断言}{断言}
, russian = {Утверждение}{Утверждения}
}
}
@@ -1018,6 +1018,49 @@
}
}
+\NameTheorem { claim }
+ {
+ , heading = {
+ , english = Claim
+ , french = Affirmation
+ , ngerman = Affirmation
+ , italian = Affermazione
+ , portuguese = Afirmação
+ , brazilian = Afirmação
+ , spanish = Afirmación
+ , schinese = 断言
+ , tchinese = 斷言
+ , japanese = 断言
+ , russian = Утверждение
+ }
+ , crefname = {
+ , english = {claim}{claims}
+ , french = [l']{affirmation}[les]{affirmations}
+ , ngerman = {Affirmation}{Affirmationen}
+ , italian = [l']{affermazione}[le]{affermazioni}
+ , portuguese = [a]{afirmação}[as]{afirmações}
+ , brazilian = [a]{afirmação}[as]{afirmações}
+ , spanish = [la]{afirmación}[las]{afirmaciones}
+ , schinese = {断言}{断言}
+ , tchinese = {斷言}{斷言}
+ , japanese = {断言}{断言}
+ , russian = {утверждение}{утверждения}
+ }
+ , Crefname = {
+ , english = {Claim}{Claims}
+ , french = [L']{affirmation}[Les]{affirmations}
+ , ngerman = {Affirmation}{Affirmationen}
+ , italian = [L']{affermazione}[Le]{affermazioni}
+ , portuguese = [A]{afirmação}[As]{afirmações}
+ , brazilian = [A]{afirmação}[As]{afirmações}
+ , spanish = [La]{afirmación}[Las]{afirmaciones}
+ , schinese = {断言}{断言}
+ , tchinese = {斷言}{斷言}
+ , japanese = {断言}{断言}
+ , russian = {Утверждение}{Утверждения}
+ }
+ }
+
\NameTheorem { conclusion }
{
, heading = {
@@ -1104,6 +1147,49 @@
}
}
+\NameTheorem { construction }
+ {
+ , heading = {
+ , english = Construction
+ , french = Construction
+ , ngerman = Konstruktion
+ , italian = Costruzione
+ , portuguese = Construção
+ , brazilian = Construção
+ , spanish = Construcción
+ , schinese = 构造
+ , tchinese = 構造
+ , japanese = 構造
+ , russian = Конструкция
+ }
+ , crefname = {
+ , english = {construction}{constructions}
+ , french = [la]{construction}[les]{constructions}
+ , ngerman = {Konstruktion}{Konstruktionen}
+ , italian = [la]{costruzione}[le]{costruzioni}
+ , portuguese = [a]{construção}[as]{construções}
+ , brazilian = [a]{construção}[as]{construções}
+ , spanish = [la]{construcción}[las]{construcciones}
+ , schinese = {构造}{构造}
+ , tchinese = {構造}{構造}
+ , japanese = {構造}{構造}
+ , russian = {конструкция}{конструкции}
+ }
+ , Crefname = {
+ , english = {Construction}{Constructions}
+ , french = [La]{construction}[Les]{constructions}
+ , ngerman = {Konstruktion}{Konstruktionen}
+ , italian = [La]{costruzione}[Le]{costruzioni}
+ , portuguese = [A]{construção}[As]{construções}
+ , brazilian = [A]{construção}[As]{construções}
+ , spanish = [La]{construcción}[Las]{construcciones}
+ , schinese = {构造}{构造}
+ , tchinese = {構造}{構造}
+ , japanese = {構造}{構造}
+ , russian = {Конструкция}{Конструкции}
+ }
+ }
+
\NameTheorem { convention }
{
, heading = {
@@ -1749,6 +1835,49 @@
}
}
+\NameTheorem { recall }
+ {
+ , heading = {
+ , english = Recall
+ , french = Rappel
+ , ngerman = Rückruf
+ , italian = Richiamo
+ , portuguese = Recordação
+ , brazilian = Recordação
+ , spanish = Recuerdo
+ , schinese = 回顾
+ , tchinese = 回顧
+ , japanese = 回顧
+ , russian = Напоминание
+ }
+ , crefname = {
+ , english = {recall}{recalls}
+ , french = [le]{rappel}[les]{rappels}
+ , ngerman = {Rückruf}{Rückrufe}
+ , italian = [il]{richiamo}[i]{richiami}
+ , portuguese = [a]{recordação}[as]{recordações}
+ , brazilian = [a]{recordação}[as]{recordações}
+ , spanish = [el]{recuerdo}[los]{recuerdos}
+ , schinese = {回顾}{回顾}
+ , tchinese = {回顧}{回顧}
+ , japanese = {回顧}{回顧}
+ , russian = {напоминание}{напоминания}
+ }
+ , Crefname = {
+ , english = {Recall}{Recalls}
+ , french = [Le]{rappel}[Les]{rappels}
+ , ngerman = {Rückruf}{Rückrufe}
+ , italian = [Il]{richiamo}[I]{richiami}
+ , portuguese = [A]{recordação}[As]{recordações}
+ , brazilian = [A]{recordação}[As]{recordações}
+ , spanish = [El]{recuerdo}[Los]{recuerdos}
+ , schinese = {回顾}{回顾}
+ , tchinese = {回顧}{回顧}
+ , japanese = {回顧}{回顧}
+ , russian = {Напоминание}{Напоминания}
+ }
+ }
+
\NameTheorem { remark }
{
, heading = {
diff --git a/macros/latex/contrib/easybook/easybook.dtx b/macros/latex/contrib/easybook/easybook.dtx
index 2fab4f66fc..07c562221e 100644
--- a/macros/latex/contrib/easybook/easybook.dtx
+++ b/macros/latex/contrib/easybook/easybook.dtx
@@ -15,7 +15,7 @@
%<*class>
\NeedsTeXFormat{LaTeX2e}[2020/10/01]
\RequirePackage{l3keys2e}
-\ProvidesExplClass{easybook}{2022/04/21}{1.66}
+\ProvidesExplClass{easybook}{2022/04/24}{1.68}
{Easily typesetting Chinese theses or books}
\bool_set_false:N \l__eb_compile_draft_bool
@@ -303,7 +303,7 @@
%<*package>
\NeedsTeXFormat{LaTeX2e}[2020/10/01]
\RequirePackage{l3keys2e,etoolbox}
-\ProvidesExplPackage{easybase}{2022/04/21}{1.66}
+\ProvidesExplPackage{easybase}{2022/04/24}{1.68}
{Easily typesetting Chinese theses or books}
\cs_generate_variant:Nn \dim_set:Nn { NV }
@@ -2322,7 +2322,7 @@
}
%</package>
%<*tcolorbox>
-\ProvidesExplFile{eb-tcolorbox.cfg}{2022/04/21}{1.66}
+\ProvidesExplFile{eb-tcolorbox.cfg}{2022/04/24}{1.68}
{Customization of tcolorbox for easybook}
\cs_set_protected:Npn \addtotcbstyle #1#2
diff --git a/macros/latex/contrib/easybook/easybook.pdf b/macros/latex/contrib/easybook/easybook.pdf
index 86dbab1d2c..9dc4327a1a 100644
--- a/macros/latex/contrib/easybook/easybook.pdf
+++ b/macros/latex/contrib/easybook/easybook.pdf
Binary files differ
diff --git a/macros/latex/contrib/easybook/easybook.tex b/macros/latex/contrib/easybook/easybook.tex
index 5f76a273c6..b7cf89b7aa 100644
--- a/macros/latex/contrib/easybook/easybook.tex
+++ b/macros/latex/contrib/easybook/easybook.tex
@@ -21,8 +21,8 @@
name = easybook,
color-scheme = blue,
title = EASYBOOK使用手册,
- version = v1.66,
- date = 2022/04/21,
+ version = v1.68,
+ date = 2022/04/24,
authors = 瞿毅,
info = 简便地排版中文学位论文或书籍,
email = toquyi@163.com,
diff --git a/macros/latex/contrib/hvextern/Changes b/macros/latex/contrib/hvextern/Changes
new file mode 100644
index 0000000000..3747ba251a
--- /dev/null
+++ b/macros/latex/contrib/hvextern/Changes
@@ -0,0 +1,4 @@
+hvextern.sty ----------------
+
+v 0.19 2022-04-23 first CTAN version
+
diff --git a/macros/latex/contrib/hvextern/README b/macros/latex/contrib/hvextern/README
new file mode 100644
index 0000000000..c011f35cd2
--- /dev/null
+++ b/macros/latex/contrib/hvextern/README
@@ -0,0 +1,17 @@
+This package allows to write code in tex, latex, Perl, Lua, PYthon,
+and MetaPost into external files, run that code and insert the
+output as pdf or png image or text. Parts of the external code
+can be listed in the document.
+The main LaTeX document must be run with the option --shell-escape
+
+
+%% It may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+
+
+Herbert Voß, hvoss@tug.org \ No newline at end of file
diff --git a/macros/latex/contrib/hvextern/doc/hvextern.pdf b/macros/latex/contrib/hvextern/doc/hvextern.pdf
new file mode 100644
index 0000000000..99a251a6e8
--- /dev/null
+++ b/macros/latex/contrib/hvextern/doc/hvextern.pdf
Binary files differ
diff --git a/macros/latex/contrib/hvextern/doc/hvextern.tex b/macros/latex/contrib/hvextern/doc/hvextern.tex
new file mode 100644
index 0000000000..8acd4e841c
--- /dev/null
+++ b/macros/latex/contrib/hvextern/doc/hvextern.tex
@@ -0,0 +1,1403 @@
+\RequirePackage{pdfmanagement-testphase}
+\DeclareDocumentMetadata{}
+\documentclass[ngerman,a4paper]{article}
+\usepackage{babel}
+\usepackage{libertinus}
+\setmonofont[Scale=MatchLowercase,FakeStretch=0.88]{AnonymousPro}
+\usepackage{iftex}
+
+\usepackage{hvlogos}
+\usepackage{hvextern}
+\usepackage{listings}
+\lstset{basicstyle=\ttfamily\small,language=[LaTeX]TeX,breaklines}
+\usepackage{xcolor}
+\begin{document}
+\title{Writing, running and including the output of external documents
+from within a main \LaTeX\ document~--v. \hvexternFileversion}
+\author{Herbert Voß\thanks{herbert@dante.de}}
+\maketitle
+
+\tableofcontents
+
+\newpage
+
+\setkeys{hv}{moveToExampleDir,ExampleDir=Examples}
+\section{Syntax}
+
+\begin{verbatim}
+\usepackage{hvextern}
+\end{verbatim}
+
+\begin{sloppypar}
+This package allows to write external \MP, \TeX, \ConTeXt, \LaTeX, \LuaTeX, \LuaLaTeX, \XeTeX, \XeLaTeX, Lua, Perl and/or Python
+source code, which will then be run via \texttt{shell escape} to create a PDF oder text output to include
+it into the main \LaTeX\ document.
+\end{sloppypar}
+
+
+There is only one environment:
+
+\begin{verbatim}
+\begin{externalDocument}[<options>]{<external filename without extension>}
+...
+source code
+...
+\end{externalDocument}
+\end{verbatim}
+
+The main document \emph{must} be run with the \texttt{-shell-escape} option, otherwise it won't work, e.g.:
+
+\begin{verbatim}
+laulatex --shell-escape <file>
+\end{verbatim}
+
+
+
+
+The purpose for this package is to show the output of documents which have to be compiled with
+a different preamble or a different engine or a complete different system, but integrating the output
+automatically in the main document..
+
+\section{First examples}
+\subsection{Without showing the code}
+
+This document was run with \LuaLaTeX. Suppose you want to insert the output of a document
+which needs for several reasons a \pdfLaTeX\ run. Instead of created and running a document
+outside of the main document and then to insert the output
+we can do this from within this \LuaLaTeX\ document itself. The external document is compiled
+with \pdfLaTeX\ and the output is insert as pdf image. The source code itself is not
+shown by the environment \texttt{externalDocument}.
+
+
+\begin{minipage}{.59\linewidth}
+\begin{lstlisting}
+\begin{externalDocument}[
+ compiler=pdflatex,force,cleanup]{Roemer1}
+\documentclass{standalone}
+%StartVisiblePreamble
+\usepackage{fontenc}
+\usepackage{libertinus}
+\usepackage[linguistics]{forest}
+\forestapplylibrarydefaults{linguistics, edges}
+%StopVisiblePreamble
+\begin{document}
+\begin{forest}
+[VP
+ [DP]
+ [V’
+ [V]
+ [DP]
+ ]
+]
+\end{forest}
+\end{document}
+\end{externalDocument}
+\end{lstlisting}
+\end{minipage}
+\begin{minipage}{.39\linewidth}
+\begin{externalDocument}[
+ compiler=pdflatex,force,cleanup={log,aux},verbose]{Roemer1}
+\documentclass{standalone}
+%StartVisiblePreamble
+\usepackage{fontenc}
+\usepackage{libertinus}
+\usepackage[linguistics]{forest}
+\forestapplylibrarydefaults{linguistics, edges}
+%StopVisiblePreamble
+\begin{document}
+\begin{forest}
+[VP
+ [DP]
+ [V’
+ [V]
+ [DP]
+ ]
+]
+\end{forest}
+\end{document}
+\end{externalDocument}
+\end{minipage}
+
+\subsection{Showing code and output of a Python example}
+The png image is created on the fly with the following arguments of \verb|externalDocument|:
+
+\begin{Verbatim}
+\begin{externalDocument}[
+ compiler=python3,
+ showFilename,
+ code,
+ ext=py,
+ docType=py,
+ usefancyvrb,
+ grfOptions={width=\linewidth}]{python}
+... Python code ...
+\end{externalDocument}
+\end{Verbatim}
+
+The code which is declared as header and main can be marked by:
+
+\begin{Verbatim}
+\extern@ExampleType{py}
+ {\NumChar StartVisibleMain}
+ {\NumChar StopVisibleMain}
+ {\NumChar StartVisiblePreamble}
+ {\NumChar StopVisiblePreamble}
+\end{Verbatim}
+
+\verb|\NumChar| is the default Python comment character \# and needs to be saved with a different
+catagory, which is done internally by the package. The complete definition of the code is:
+
+
+\begin{Verbatim}
+\begin{externalDocument}[
+ compiler=python3,
+ showFilename,
+ code,
+ ext=py,
+ force,
+ docType=py,
+ usefancyvrb,
+ grfOptions={width=\linewidth}]{python}
+import os
+#StartVisiblePreamble
+from PIL import Image
+import subprocess
+# drawing area (xa < xb and ya < yb)
+xa = -0.1716
+xb = -0.1433
+ya = 1.022
+yb = 1.044
+maxIt = 1024 # iterations
+imgx = 1000 # image size
+imgy = 750
+image = Image.new("RGB", (imgx, imgy))
+#StopVisiblePreamble
+
+#StartVisibleMain
+for y in range(imgy):
+ cy = y * (yb - ya) / (imgy - 1) + ya
+ for x in range(imgx):
+ cx = x * (xb - xa) / (imgx - 1) + xa
+ c = complex(cx, cy)
+ z = 0
+ for i in range(maxIt):
+ if abs(z) > 2.0: break
+ z = z * z + c
+ r = i % 4 * 6
+ g = i % 8 * 32
+ b = i % 16 * 16
+ image.putpixel((x, y), b * 65536 + g * 256 + r)
+#StopVisibleMain
+# now get the filename created by the latex document
+imageName = os.path.basename(os.path.splitext(__file__)[0])+".png" # get filename
+image.save(imageName, "PNG")
+\end{externalDocument}
+\end{Verbatim}
+
+And with using this code we get the image as png inserted. The given filename of the external
+document is
+internally extended by a consecutive number which isn't known to the Python code. However,
+it is no problem in any programming language to get the name of a running file. The forlast
+line in the above code shows how it can be done with Python.
+
+
+\begin{externalDocument}[
+ compiler=python3,
+ progpath=/usr/local/bin/,
+ force,
+ showFilename,
+ runs=1,
+ code,
+ ext=py,
+ docType=py,
+ usefancyvrb,
+ grfOptions={width=\linewidth}]{python}
+import os
+#StartVisiblePreamble
+from PIL import Image
+import subprocess
+# drawing area (xa < xb and ya < yb)
+xa = -0.1716
+xb = -0.1433
+ya = 1.022
+yb = 1.044
+maxIt = 1024 # iterations
+imgx = 1000 # image size
+imgy = 750
+image = Image.new("RGB", (imgx, imgy))
+#StopVisiblePreamble
+
+#StartVisibleMain
+for y in range(imgy):
+ cy = y * (yb - ya) / (imgy - 1) + ya
+ for x in range(imgx):
+ cx = x * (xb - xa) / (imgx - 1) + xa
+ c = complex(cx, cy)
+ z = 0
+ for i in range(maxIt):
+ if abs(z) > 2.0: break
+ z = z * z + c
+ r = i % 4 * 6
+ g = i % 8 * 32
+ b = i % 16 * 16
+ image.putpixel((x, y), b * 65536 + g * 256 + r)
+#StopVisibleMain
+# now get the filename created by the latex document
+imageName = os.path.basename(os.path.splitext(__file__)[0]) # get filename
+image.save(imageName+".png", "PNG")
+\end{externalDocument}
+
+
+
+
+
+
+
+\begin{externalDocument}[grfOptions={width=0.95\linewidth},
+ compiler=xelatex,code,mpwidth=0.6\linewidth,
+ crop,cleanup,force,usefancyvrb=false,ext=tex]{Senger3}
+\documentclass{article}
+%StartVisiblePreamble
+\usepackage{tikz}
+\usepackage[hks,pantone,xcolor]{xespotcolor}
+%StopVisiblePreamble
+\pagestyle{empty}
+\begin{document}
+\SetPageColorSpace{HKS}
+\definecolor{HYellow}{spotcolor}{HKS05N,0.5}
+\definecolor{HRed}{spotcolor}{HKS14N,0.5}
+\definecolor{HBlue}{spotcolor}{HKS38N,0.5}
+\begin{tikzpicture}[scale=0.7,fill opacity=0.7]
+ \fill[HYellow]( 90:1.2) circle (2);
+ \fill[HRed] (210:1.2) circle (2);
+ \fill[HBlue] (330:1.2) circle (2);
+ \node at ( 90:2) {Typography};
+ \node at ( 210:2) {Design};
+ \node at ( 330:2) {Coding};
+ \node {\LaTeX};
+\end{tikzpicture}
+\end{document}
+\end{externalDocument}
+
+
+\section{Setting marker in the source}
+The marker for the code ranges which should be listed depend to the used programming language:
+
+\begin{verbatim}
+[...]
+%StartVisiblePreamble
+[... listed preamble code ]
+%StopVisiblePreamble
+[...]
+\begin{document}
+[...]
+\end{document}
+\end{verbatim}
+
+everything between \verb|%StartVisiblePreamble| and \verb|%StopVisiblePreamble| will be listed as
+preamble and in case of a \LaTeX\ source everything between
+ \verb|\begin{document}| and \verb|\end{document}| as body. The marker must be defined in an own
+ config file, e.g. \texttt{hv-extern-py.cfg}:
+
+\begin{verbatim}
+\extern@ExampleType{py}
+ {\NumChar StartVisibleMain}
+ {\NumChar StopVisibleMain}
+ {\NumChar StartVisiblePreamble}
+ {\NumChar StopVisiblePreamble}
+\end{verbatim}
+
+\verb|\NumChar| is the comment character \#, which needs a special handling. This version of \texttt{hvextern}
+supports the following programming languages (option \texttt{compiler}):
+mpost, tex, latex, luatex, python3, perl, lua, xetex, pdflatex, lualatex, xelatex, and context. The default
+is pdflatex. The option \texttt{docType} selects the config file, which must be one of
+context, lua, pl, tex, latex, mp, and py. For Lua it is
+
+\begin{verbatim}
+\extern@ExampleType{lua}
+ {--StartVisibleMain}
+ {--StopVisibleMain}
+ {--StartVisiblePreamble}
+ {--StopVisiblePreamble}
+\end{verbatim}
+
+
+It defines the marker strings for the listed code sequences. In some cases you have to use multiple times the same value
+for different optional arguments, e.g.
+
+\begin{verbatim}
+ext=lua, compiler=lua, docType=lua, ...
+\end{verbatim}
+
+
+\section{Optional arguments}
+The deafault setting is always shown in brackets.
+\subsection{Programs and runs}
+
+The \texttt{progpath} should only in some
+rare cases needed. In general all used compilers will be found by the system. A given \texttt{progpath}
+must be end with a slash, e.g. \texttt{./bin/} The option \texttt{runsequence} is currently not used.
+
+\begin{verbatim}
+\define@key{hv}{progpath}[]{\def\hv@extern@progpath{#1}}
+\define@key{hv}{compiler}[pdflatex]{\def\hv@extern@compiler{#1}}
+\define@key{hv}{runsequence}[]{\def\hv@extern@runsequence{#1}}
+\define@key{hv}{runs}[1]{\setcounter{hv@extern@runs}{#1}}
+\end{verbatim}
+
+\subsection{Grafik options}
+\begin{verbatim}
+\define@key{hv}{grfOptions}[]{\def\hv@extern@grfOptions{#1}}
+\end{verbatim}
+
+The option is passed to \verb|\includegraphics|, e.g. \verb|angle=90,width=\linewidth| for
+the follwing example.
+
+\begin{externalDocument}[grfOptions={angle=90,width=\linewidth},
+ compiler=xelatex,code,mpwidth=0.6\linewidth,
+ crop,cleanup,force]{Senger3}
+\documentclass{article}
+%StartVisiblePreamble
+\usepackage{tikz}
+\usepackage[hks,pantone,xcolor]{xespotcolor}
+%StopVisiblePreamble
+\pagestyle{empty}
+\begin{document}
+\SetPageColorSpace{HKS}
+\definecolor{HYellow}{spotcolor}{HKS05N,0.5}
+\definecolor{HRed}{spotcolor}{HKS14N,0.5}
+\definecolor{HBlue}{spotcolor}{HKS38N,0.5}
+\begin{tikzpicture}[scale=0.7,fill opacity=0.7]
+ \fill[HYellow] ( 90:1.2) circle (2);
+ \fill[HRed] (210:1.2) circle (2);
+ \fill[HBlue] (330:1.2) circle (2);
+ \node at ( 90:2) {Typography};
+ \node at ( 210:2) {Design};
+ \node at ( 330:2) {Coding};
+ \node {\LaTeX};
+\end{tikzpicture}
+\end{document}
+\end{externalDocument}
+
+
+\subsection{Listings options}
+
+\begin{verbatim}
+\define@key{hv}{lstOptions}[]{\def\hv@extern@lstOptions{#1}}
+\end{verbatim}
+
+The option is passed either to \verb|\lstinputlisting|, or, if \texttt{usefancyvrb} is active,
+to \verb|\VerbatimInput|. The following example uses
+
+\begin{verbatim}
+ lstOptions={basicstyle=\sffamily\itshape\scriptsize},
+\end{verbatim}
+
+
+
+\begin{externalDocument}[
+ grfOptions={width=\linewidth},
+ lstOptions={basicstyle=\sffamily\itshape\scriptsize},
+ compiler=lualatex,
+ code,
+ mpwidth=0.6\linewidth,
+ crop,
+ cleanup,
+ force,
+ docType=latex]{voss}
+\RequirePackage{pdfmanagement-testphase}
+\DeclareDocumentMetadata{}
+\documentclass{article}
+%StartVisiblePreamble
+\usepackage{pst-calendar}
+%StopVisiblePreamble
+\pagestyle{empty}
+\begin{document}
+\psscalebox{0.3}{%
+ \psCalDodecaeder[Year=2022,style=april]%
+}
+\end{document}
+\end{externalDocument}
+
+\subsection{Background color}
+
+There are different colors for the preamble and body listing: the backgrund and frame color.
+\begin{verbatim}
+\define@key{hv}{BGpreamble}[black12]{\def\hv@extern@BGpreamble{#1}}
+\define@key{hv}{BGbody}[black8]{\def\hv@extern@BGbody{#1}}
+\define@key{hv}{BOpreamble}[black12]{\def\hv@extern@BOpreamble{#1}}
+\define@key{hv}{BObody}[black8]{\def\hv@extern@BObody{#1}}
+\end{verbatim}
+
+The options are passed to \verb|tcolorbox| and preset to \texttt{black12} and \texttt{black!8}.
+The color of the frame is set to the same values, hence not seen. The following example uses
+
+\begin{verbatim}
+ BGpreamble=red!10, BOpreamble=red,
+ BGbody=blue!8, BObody=blue,
+\end{verbatim}
+
+%\clearpage
+
+\begin{externalDocument}[
+ grfOptions={width=\linewidth},
+ lstOptions={fontsize=\small,fontfamily=tt},
+ compiler=lualatex,
+ BGpreamble=red!10, BOpreamble=red,
+ BGbody=blue!8, BObody=blue,
+ code,
+ mpwidth=0.6\linewidth,
+ crop,
+ cleanup,
+ force,
+ usefancyvrb,
+ docType=latex]{voss}
+\RequirePackage{pdfmanagement-testphase}
+\DeclareDocumentMetadata{}
+\documentclass{article}
+%StartVisiblePreamble
+\usepackage{pst-calendar}
+%StopVisiblePreamble
+\pagestyle{empty}
+\begin{document}
+\psscalebox{0.3}{%
+ \psCalDodecaeder[Year=2022,style=may]%
+}
+\end{document}
+\end{externalDocument}
+
+\subsection{Type of the source code}
+
+The current version of \texttt{hvextern} supports code written as
+\MP, \plainTeX, \LaTeX, \ConTeXt, and Python. Every type has its own config file which
+defines the keywords for the linerange which should be printed for the preamble and
+the body. For example the \texttt{latex} config file \texttt{hvextern-latex,cfg}:
+
+\begin{verbatim}
+\extern@ExampleType{latex}% for _all_LaTeX engines
+ {\string\begin\string{document\string}}%
+ {\string\end\string{document\string}}%
+ {\perCent StartVisiblePreamble}%
+ {\perCent StopVisiblePreamble}%
+
+% only for the sequence latex->dvips->ps2pdf
+\def\hv@extern@runLATEX#1#2#3#4{% path compiler file extension
+ \ifhv@extern@verbose \typeout{>>>> running #1#2 #3#4}\fi
+ \ShellEscape{#1#2\space #3#4}%
+ \ifhv@extern@verbose \typeout{>>>> running #1dvips #3}\fi
+ \ShellEscape{#1dvips\space #3.dvi}%
+ \ifhv@extern@verbose \typeout{>>>> running ps2pdf #3.ps}\fi
+ \ShellEscape{#1ps2pdf\space -dAutoRotatePages=/None\space -dALLOWPSTRANSPARENCY\space #3.ps}%
+}
+\end{verbatim}
+
+If a source needs more than running the defined compiler, it must be defined by a macro
+\begin{verbatim}
+\def\hv@extern@run<NAME>#1#2#3#4{% path compiler file extension
+...}
+\end{verbatim}
+
+The type of the source code can be different to the compiler, e.g. source \texttt{latex},
+but compiler \texttt{lualatex}.
+
+
+\subsection{Output as floating object with caption and label}
+
+By default the images are not inserted as a float. This can be changed by
+the keyword \texttt{float}, a caption and a label are optional. The float type is always
+\texttt{figure}.
+
+\begin{verbatim}
+\define@boolkey{hv}[hv@extern@]{float}[true]{}
+\define@key{hv}{caption}[]{\def\hv@extern@caption{#1}}
+\define@key{hv}{label}[]{\def\hv@extern@label{#1}}
+\end{verbatim}
+
+The image Figure~\ref{img:cox} shows an example for a floting object.
+
+\begin{externalDocument}[
+ grfOptions={width=\linewidth},
+ lstOptions={fontsize=\small,fontfamily=tt},
+% lstOptions={basicstyle=\small\ttfamily},
+ compiler=lualatex,
+ BGpreamble=red!10, BOpreamble=red,
+ BGbody=blue!8, BObody=blue,
+ code,
+% mpwidth=0.6\linewidth,
+ crop,
+ cleanup,
+ force,
+ usefancyvrb,
+ float,
+ caption={An example for Coxeter images},
+ label=img:cox,
+ docType=latex]{voss}
+\RequirePackage{pdfmanagement-testphase}
+\DeclareDocumentMetadata{}
+\documentclass{article}
+%StartVisiblePreamble
+\usepackage{pst-coxeterp}
+%StopVisiblePreamble
+\pagestyle{empty}
+\begin{document}
+\begin{pspicture}(-1,-1)(1,1)\Simplex[dimension=2]\end{pspicture}
+%
+\begin{pspicture}(-1,-1)(1,1)\Simplex[dimension=3]\end{pspicture}
+%
+\begin{pspicture}(-1,-1)(1,1)\Simplex[dimension=5]\end{pspicture}
+%
+\begin{pspicture}(-1,-1)(1,1)\Simplex[dimension=7]\end{pspicture}
+%
+% ------------------------------------
+% Only some text to show the pagebreak
+% ------------------------------------
+\end{document}
+\end{externalDocument}
+
+
+
+
+\subsection{Output more than one page}
+The pages which should be printed can be defined by
+
+
+\begin{verbatim}
+\define@key{hv}{pages}[1]{\def\hv@extern@pages{#1}}
+\define@boolkey{hv}[hv@extern@]{frame}[true]{}
+\end{verbatim}
+
+With \texttt{frame} the pages can be framed (internally by \verb|\fbox|).
+It is leaved to the user to choose the correct image width for the pages.
+The following example uses:
+
+\begin{verbatim}
+ pages={1,2,3},
+ grfOptions={width=0.3\linewidth},
+ compiler=lualatex, runs=2, % for the TOC
+ frame,
+\end{verbatim}
+
+\begin{externalDocument}[
+ pages={1,2,3},
+ grfOptions={width=0.3\linewidth},
+% lstOptions={fontsize=\small,fontfamily=tt},
+ compiler=lualatex, runs=2,
+ BGpreamble=red!10, BOpreamble=red,
+ BGbody=blue!8, BObody=blue,
+ code,
+% mpwidth=0.6\linewidth,
+% crop,
+ cleanup,
+ force,
+ frame,
+% usefancyvrb,
+% float,
+% caption={An example for Coxeter images},
+% label=img:cox,
+ docType=latex]{voss}
+\documentclass{article}
+%StartVisiblePreamble
+\usepackage[american]{babel}
+\usepackage{libertinus}
+\usepackage{blindtext}
+%StopVisiblePreamble
+\pagestyle{empty}
+\begin{document}
+\title{A multipage example}
+\author{Erasmus von Rotterdam}
+\maketitle
+\tableofcontents
+\blinddocument
+\end{document}
+\end{externalDocument}
+
+
+
+\subsection{Cropping the PDF}
+Instead of using the documentclass \texttt{standalone}, which already crops the created PDF,
+one can use the optional argument \texttt{crop}.
+
+\begin{verbatim}
+\define@boolkey{hv}[hv@extern@]{crop}[true]{}
+\define@key{hv}{cropmargin}[2]{\def\hv@extern@cropmargin{#1 }}% length in pt
+\end{verbatim}
+
+
+It is also possible to crop a document with more than one page. In this case the
+beginning and end of the pages should be on the same height. Otherwise the pages
+will have different heights after cropping (see next image). The follwoing example was created with
+
+\begin{verbatim}
+ pages={1,2,3},
+ grfOptions={width=0.3\linewidth},
+ compiler=lualatex, runs=2, % for the TOC
+ frame,
+ crop, cropmargin=5,% 5pt margin
+\end{verbatim}
+
+\begin{externalDocument}[
+ pages={1,2,3},
+ grfOptions={width=0.3\linewidth},
+% lstOptions={fontsize=\small,fontfamily=tt},
+ compiler=lualatex, runs=2,
+ BGpreamble=red!10, BOpreamble=red,
+ BGbody=blue!8, BObody=blue,
+ code,
+% mpwidth=0.6\linewidth,
+ crop, cropmargin=5,
+ cleanup,
+ force,
+ frame,
+% usefancyvrb,
+% float,
+% caption={An example for Coxeter images},
+% label=img:cox,
+ docType=latex]{voss}
+\documentclass{article}
+%StartVisiblePreamble
+\usepackage[american]{babel}
+\usepackage{libertinus}
+\usepackage{blindtext}
+\pagestyle{headings}
+%StopVisiblePreamble
+\begin{document}
+\title{A multipage example}
+\author{Erasmus von Rotterdam}
+\maketitle
+\tableofcontents
+\Blinddocument
+\end{document}
+\end{externalDocument}
+
+
+\subsection{Code and output side by side}
+By default the code and the output is on top of each other. With setting the
+width of a minipage with \texttt{mpwidth} greater than 0\,pt the output will be side by side.
+
+\begin{verbatim}
+\define@key{hv}{mpwidth}[0pt]{\setlength\hv@extern@mpwidth{#1}}
+\end{verbatim}
+
+\texttt{mpwidth} is the width of the code. The rest of the line, minus 1em for the space between
+the minipages, will be the possible
+width for the output and will be calculated automatically. The two minipages are
+aligned by its top.
+
+
+
+\subsection{Align of the output}
+
+%\begin{verbatim}
+%\define@key{hv}{align}[\centering]{\def\hv@extern@align{#1}}
+%\end{verbatim}
+
+\subsubsection{the default}
+
+\begin{verbatim}
+ align=\centering,
+\end{verbatim}
+
+\begin{externalDocument}[
+ compiler=lualatex, runs=2,
+ BGpreamble=red!10, BOpreamble=red,
+ BGbody=blue!8, BObody=blue,
+ code,
+ crop,
+ cleanup,
+ force,
+ docType=latex]{voss}
+\documentclass{article}
+\pagestyle{empty}
+\begin{document}
+\rule{0.5\linewidth}{5mm}
+\end{document}
+\end{externalDocument}
+
+\subsubsection{Left aligned}
+
+\begin{verbatim}
+ align=\raggedright,
+\end{verbatim}
+
+\begin{externalDocument}[
+ align=\raggedright,
+ compiler=lualatex, runs=2,
+ BGpreamble=red!10, BOpreamble=red,
+ BGbody=blue!8, BObody=blue,
+ code,
+ crop,
+ cleanup,
+ force,
+ docType=latex]{voss}
+\documentclass{article}
+\pagestyle{empty}
+\begin{document}
+\rule{0.5\linewidth}{5mm}
+\end{document}
+\end{externalDocument}
+
+\subsubsection{Right aligned}
+
+\begin{verbatim}
+ align=\raggedleft,
+\end{verbatim}
+
+
+\begin{externalDocument}[
+ align=\raggedleft,
+ compiler=lualatex, runs=2,
+ BGpreamble=red!10, BOpreamble=red,
+ BGbody=blue!8, BObody=blue,
+ code,
+ crop,
+ cleanup,
+ force,
+ docType=latex]{voss}
+\documentclass{article}
+\pagestyle{empty}
+\begin{document}
+\rule{0.5\linewidth}{5mm}
+\end{document}
+\end{externalDocument}
+
+
+%Now the same for side by side output.
+
+\subsubsection{the default -- side by side}
+\begin{verbatim}
+ align=\centering, mpwidth=0.5\linewidth,
+\end{verbatim}
+
+\begin{externalDocument}[
+ compiler=lualatex, runs=2,
+ BGpreamble=red!10, BOpreamble=red,
+ BGbody=blue!8, BObody=blue,
+ code,
+ crop,
+ cleanup,
+ force,
+ mpwidth=0.5\linewidth,
+ docType=latex]{voss}
+\documentclass{article}
+\pagestyle{empty}
+\begin{document}
+\rule{0.25\linewidth}{5mm}
+\end{document}
+\end{externalDocument}
+
+\subsubsection{Left aligned -- side by side}
+
+\begin{verbatim}
+ align=\raggedright, mpwidth=0.5\linewidth,
+\end{verbatim}
+
+\begin{externalDocument}[
+ align=\raggedright,
+ compiler=lualatex, runs=2,
+ BGpreamble=red!10, BOpreamble=red,
+ BGbody=blue!8, BObody=blue,
+ code,
+ crop,
+ cleanup,
+ force,
+ mpwidth=0.5\linewidth,
+ docType=latex]{voss}
+\documentclass{article}
+\pagestyle{empty}
+\begin{document}
+\rule{0.25\linewidth}{5mm}
+\end{document}
+\end{externalDocument}
+
+\subsubsection{Right aligned -- side by side}
+
+\begin{verbatim}
+ align=\raggedleft, mpwidth=0.5\linewidth,
+\end{verbatim}
+
+
+\begin{externalDocument}[
+ align=\raggedleft,
+ compiler=lualatex, runs=2,
+ BGpreamble=red!10, BOpreamble=red,
+ BGbody=blue!8, BObody=blue,
+ code,
+ crop,
+ cleanup,
+ force,
+ mpwidth=0.5\linewidth,
+ docType=latex]{voss}
+\documentclass{article}
+\pagestyle{empty}
+\begin{document}
+\rule{0.25\linewidth}{5mm}
+\end{document}
+\end{externalDocument}
+
+\subsection{Inline images}
+By default code and image are own paragraphs. With the optional argument \texttt{inline} the created
+image can be part of the current line. This may make sense, if you need characters which are
+not part of your current font.
+
+\begin{verbatim}
+\define@boolkey{hv}[hv@extern@]{inline}[true]{\hv@extern@codefalse}
+\end{verbatim}
+
+With \texttt{inline=true} the optional argument \texttt{code} is automatically set to false. The
+next Chinese characters
+\begin{externalDocument}[
+ compiler=xelatex, inline, runs=2, grfOptions={height=8pt},
+ crop, cropmargin=0, cleanup, force, docType=latex]{voss}%
+\documentclass{ctexart}
+\pagestyle{empty}
+\begin{document}
+美好的一天
+\end{document}
+\end{externalDocument}
+are inserted as inline image without showing the code. The complete code looks like:
+
+
+
+\begin{Verbatim}
+With \texttt{inline=true} the optional argument \texttt{code} is automatically set to false. The
+next Chinese characters
+\begin{externalDocument}[
+ compiler=xelatex, inline, runs=2, grfOptions={height=8pt},
+ crop, cropmargin=0, cleanup, force, docType=latex]{voss}
+\documentclass{ctexart}
+\pagestyle{empty}
+\begin{document}
+美好的一天
+\end{document}
+\end{externalDocument}
+are inserted as inline image without showing the code. The complete code looks like:
+\end{Verbatim}
+
+
+\subsection{Input text instead of an image}
+By default the created pdf which can be, of course, only test, wil be insert by \verb|\incudegraphics|.
+If you have only text as output and dont want to create a pdf you can insert this kind of
+output as verbatim text by setting \verb|includegraphic=false|.
+
+\begin{verbatim}
+\define@boolkey{hv}[hv@extern@]{includegraphic}[true]{}
+\end{verbatim}
+
+
+The textfile must have the same main filename with the extension
+\verb|.txt|. As already mentioned, in every programming language you can get the current
+used filename from within the code itself. The following Perl example which calculates the
+Kaprekar constants uses
+
+\begin{verbatim}
+my $filename = $0; # the current filename
+$filename =~ s/\.pl//; # without extension .pl
+$filename = "${filename}.txt"; # for the output
+\end{verbatim}
+
+Only for some completeness: a Kaprekar constant is a number $A$ with $\max(A)-\min(A)=A$. $\max$ and $\min$ are the
+sorted digits of the number $A$: $495=954-459$.
+
+
+\begin{externalDocument}[
+ compiler=perl, force, docType=pl, ext=pl, includegraphic=false,
+ code, mpwidth=0.6\linewidth]{voss}
+#!/usr/bin/perl
+#
+# Herbert Voss 2005-05-31
+#
+#StartVisiblePreamble
+my $zahl = 1;
+my $anfang = 1;
+my $ende = 9;
+#StopVisiblePreamble
+my $filename = $0; # the current filename
+$filename =~ s/\.pl//; # without extension .pl
+$filename = "${filename}.txt"; # for the output
+my $found = 0;
+open(my $fh, '>', $filename);
+
+#StartVisibleMain
+print $fh "Finding Kaprekarconstants ...\n";
+while ($zahl < 8) {
+ print $fh "${zahl}-stellig: ";
+ foreach ($anfang...$ende) { # for every row $_
+ @Zeichen = split(//,$_);
+ $Min = join("",sort(@Zeichen));
+ $Max = reverse($Min);
+ $Dif=$Max-$Min;
+ if($_ eq $Dif) {
+ $found = 1;
+ print $fh $_,", ";
+ }
+ }
+ if (!$found) { print $fh "---\n"; }
+ else { print $fh "\n"; }
+ $found = false;
+ $zahl = $zahl+1;
+ $anfang = $anfang*10;
+ $ende = $ende*10;
+}
+#StopVisibleMain
+close $fh;
+\end{externalDocument}
+
+
+%$
+Another example with running Lua to calculate and print the Pascal's triangle. The internal filename
+is available with
+
+\begin{verbatim}
+local filename = arg[0]
+local shortFN = str:match("(.+)%..+") -- delete extension
+outFile = io.open(shortFN..".txt","w+") -- open external file
+\end{verbatim}
+
+
+\begin{externalDocument}[
+ compiler=lua, force, docType=lua, ext=lua, includegraphic=false, code, usefancyvrb=false]{voss}
+#!/usr/bin/env lua
+local filename = arg[0]
+local shortFN = filename:match("(.+)%..+")
+outFile = io.open(shortFN..".txt","w+")
+
+--StartVisiblePreamble
+function nextrow(t)
+ local ret = {}
+ t[0], t[#t+1] = 0, 0
+ for i = 1, #t do ret[i] = t[i-1] + t[i] end
+ return ret
+end
+
+function triangle(n)
+ t = {1}
+ for i = 1, n do
+ m = (n - i)
+ for j = 1,m do outFile:write(" ") end
+ for k = 1,i do outFile:write(string.format("%8s",t[k])) end
+ outFile:write("\n")
+ t = nextrow(t)
+ end
+end
+--StopVisiblePreamble
+
+--StartVisibleMain
+triangle(10)
+--StopVisibleMain
+outFile:close()
+\end{externalDocument}
+
+
+
+
+
+
+\subsection{Running additional external programs}
+
+For a \LaTeX\ additional programs for bibliography, index, a.s.o. maybe needed.
+
+\begin{verbatim}
+\define@boolkey{hv}[hv@extern@]{biber}[true]{}
+\define@boolkey{hv}[hv@extern@]{xindex}[true]{}
+\define@key{hv}{xindexOptions}[]{\def\hv@extern@xindexOptions{#1}}
+\end{verbatim}
+
+The \texttt{biber} run needs no additional options, but for \texttt{xindex} it maybe useful.
+The following examples uses
+
+\begin{verbatim}
+\begin{externalDocument}[
+ compiler=lualatex, runs=2,
+ pages=2,
+ crop,
+ xindex,
+ xindexOptions={-l DE --config AU},
+ mpwidth=0.6\linewidth,
+ usefancyvrb=false,
+ docType=latex,
+ ...
+]{voss}
+\end{verbatim}
+
+
+
+
+\begin{externalDocument}[
+ grfOptions={scale=0.75},
+ compiler=lualatex, runs=2,
+ BGpreamble=red!10, BOpreamble=red,
+ BGbody=blue!8, BObody=blue,
+ code,
+ pages=2,
+ crop,
+ cleanup,
+ force,
+ xindex,
+ xindexOptions={-l DE --config AU},
+ mpwidth=0.6\linewidth,
+ usefancyvrb=false,
+ docType=latex]{voss}
+\documentclass[paper=a6,DIV=18,parskip=half-]{screxa}
+\pagestyle{empty}
+\usepackage{libertinus}
+\setmonofont{DejaVu Sans Mono}[Scale=MatchLowercase,FakeStretch=0.9]
+\usepackage[ngerman]{babel}
+\usepackage{multicol}
+\makeatletter
+\def\theindex{% only for demonstration
+ \newpage
+ \section*{\indexname}
+ \begin{multicols}{2}
+ \parskip\z@ \@plus .3\p@\relax \parindent\z@
+ \let\item\@idxitem}
+\def\endtheindex{\end{multicols}}
+\makeatother
+%StartVisiblePreamble
+\usepackage{makeidx}\makeindex
+\usepackage{hvindex}
+%StopVisiblePreamble
+\begin{document}
+Sort with xindex \verb|-l DE --config AU|
+\Index{Österreich} \Index{Öresund}
+\Index{Ostern} \Index{Ober} \Index{Oberin}
+\Index{Österreich} \Index{Öresund}
+\Index{Ödem} \Index{Oligarch} \Index{Oder}
+\Index{Ostern} \Index{Ober} \Index{Oberin}
+\Index{Obstler} \Index{Öl} \Index{ölen}
+\Index{Oder|seealso{Fluss}} \Index{Göbel}
+\Index{oder} \index{Fluss!Oder}
+\Index{Goethe} \Index{Göthe} \Index{Götz}
+\Index{Goldmann}
+\printindex
+\end{document}
+\end{externalDocument}
+
+
+
+
+
+
+
+\subsection{Using \texttt{listings}}
+The default is using \verb|\lstinputlisting| for the printed code sequences.
+
+\begin{externalDocument}[
+ grfOptions={width=0.45\linewidth},
+ pages={1,3},
+ frame,compiler=pdflatex,
+ showFilename,
+% crop,
+ force,runs=2,code,docType=latex,
+ frame,
+ lstOptions={columns=fixed}]{Schubert-A}
+%StartVisiblePreamble
+\documentclass[chapterprefix=on,parskip=half-,DIV=12,fontsize=12pt]{scrbook}
+\DeclareNewSectionCommand[
+ style=section,
+ level=4,
+ beforeskip=-3.25ex plus -1ex minus -.2ex,
+ afterskip=1.5ex plus .2ex,
+ font=\normalsize,
+ indent=0pt,
+ counterwithin=subsubsection
+]{subsubsubsection}
+\RedeclareSectionCommand[
+ level=5,
+ toclevel=5,
+ tocindent=13em,
+ tocnumwidth=5.9em,
+ counterwithin=subsubsubsection
+]{paragraph}
+\RedeclareSectionCommand[
+ level=6,
+ toclevel=6,
+ tocindent=15em,
+ tocnumwidth=6.8em
+]{subparagraph}
+\setcounter{secnumdepth}{\subsubsubsectionnumdepth}
+\setcounter{tocdepth}{\subsubsubsectiontocdepth}
+%StopVisiblePreamble
+\usepackage[ngerman]{babel}
+\usepackage{libertinus}
+\usepackage{blindtext}
+\begin{document}
+\tableofcontents
+\chapter{Einführung}
+\section{Ein Abschnitt}
+\subsection{Ein Unterabschnitt}
+\subsubsection{Ein Unter-Unterabschnitt}
+\subsubsubsection{Ein Unter-Unter-Unterabschnitt}
+\paragraph{Der normale Paragraph}
+\blindtext
+\subparagraph{Der normale Unterparagraph}
+\blindtext
+\blinddocument
+\end{document}
+\end{externalDocument}
+
+
+
+It also possible to use \verb|\VerbatimInput| from package \texttt{fancyvrb}. In general
+it makes no difference using the optional argument \texttt{usefancyvrb} or not.
+
+
+\begin{externalDocument}[
+ grfOptions={width=0.45\linewidth},
+ pages={1,3},
+ frame,compiler=pdflatex,
+ showFilename,
+% crop,
+ force,runs=2,code,docType=latex,
+ frame,usefancyvrb]{Schubert-A}
+%StartVisiblePreamble
+\documentclass[chapterprefix=on,parskip=half-,DIV=12,fontsize=12pt]{scrbook}
+\DeclareNewSectionCommand[
+ style=section,
+ level=4,
+ beforeskip=-3.25ex plus -1ex minus -.2ex,
+ afterskip=1.5ex plus .2ex,
+ font=\normalsize,
+ indent=0pt,
+ counterwithin=subsubsection
+]{subsubsubsection}
+\RedeclareSectionCommand[
+ level=5,
+ toclevel=5,
+ tocindent=13em,
+ tocnumwidth=5.9em,
+ counterwithin=subsubsubsection
+]{paragraph}
+\RedeclareSectionCommand[
+ level=6,
+ toclevel=6,
+ tocindent=15em,
+ tocnumwidth=6.8em
+]{subparagraph}
+\setcounter{secnumdepth}{\subsubsubsectionnumdepth}
+\setcounter{tocdepth}{\subsubsubsectiontocdepth}
+%StopVisiblePreamble
+\usepackage[ngerman]{babel}
+\usepackage{libertinus}
+\usepackage{blindtext}
+\begin{document}
+\tableofcontents
+\chapter{Einführung}
+\section{Ein Abschnitt}
+\subsection{Ein Unterabschnitt}
+\subsubsection{Ein Unter-Unterabschnitt}
+\subsubsubsection{Ein Unter-Unter-Unterabschnitt}
+\paragraph{Der normale Paragraph}
+\blindtext
+\subparagraph{Der normale Unterparagraph}
+\blindtext
+\blinddocument
+\end{document}
+\end{externalDocument}
+
+
+
+\section{Supported engines}
+\subsection{\MP\ example}
+
+\begin{externalDocument}[
+% grfOptions={width=0.45\linewidth},
+% pages={1,3},
+ frame,
+ verbose=false,
+ compiler=mpost,
+ showFilename,
+% crop,
+ force,
+ code,
+ docType=mp,
+ ext=mp,]{voss}
+%StartVisiblePreamble
+defaultfont:="ptmr8r";
+warningcheck:=0;
+%StopVisiblePreamble
+beginfig(1)
+draw fullcircle shifted (0.5,0.6) xscaled 8cm yscaled 3.5cm
+ withpen pencircle scaled 5bp withcolor red;
+special( " /Times-Roman findfont 150 scalefont setfont " &
+ " 0 10 moveto (MPost) false charpath clip stroke gsave 150 70 translate " &
+ " 2 4 600 {dup 0 moveto 0 exch 0 exch 0 360 arc stroke} for grestore ");
+endfig;
+end;
+\end{externalDocument}
+
+
+
+
+\subsection{plain\TeX\ example}
+
+\begin{externalDocument}[
+ grfOptions={width=0.5\linewidth},
+% pages={1,3},
+ frame,
+ verbose=false,
+ compiler=tex,
+ showFilename,
+% crop,
+ force,
+ code,
+ docType=tex,
+ ext=tex,]{voss}
+\magnification=\magstep1
+\baselineskip=12pt
+\hsize=6.3truein
+\vsize=8.7truein
+\font\footsc=cmcsc10 at 8truept
+\font\footbf=cmbx10 at 8truept
+\font\footrm=cmr10 at 10truept
+%StartVisiblePreamble
+\footline={\footsc the electronic journal of combinatorics
+ {\footbf 16} (2009), \#R00\hfil\footrm\folio}
+%StopVisiblePreamble
+%StartBody
+\font\bigrm=cmr12 at 14pt
+\centerline{\bigrm An elementary proof of the reconstruction conjecture}
+
+\bigskip\bigskip
+\centerline{D. Remifa\footnote*{Thanks to the editors of this journal!}}
+\smallskip
+\centerline{Department of Inconsequential Studies}
+\centerline{Solatido College, North Kentucky, USA}
+\centerline{\tt remifa@dis.solatido.edu}
+\bigskip
+\centerline{\footrm
+Submitted: Jan 1, 2009; Accepted: Jan 2, 2009; Published: Jan 3, 2009}
+\centerline{\footrm Mathematics Subject Classifications: 05C88, 05C89}
+\bigskip\bigskip
+\centerline{\bf Abstract}
+\smallskip
+{\narrower\noindent
+The reconstruction conjecture states that the multiset of unlabeled
+vertex-deleted subgraphs of a graph determines the graph, provided it
+has at least 3 vertices. A version of the problem was first stated
+by Stanis\l aw Ulam. In this paper, we show that the conjecture can
+be proved by elementary methods. It is only necessary to integrate
+the Lenkle potential of the Broglington manifold over the quantum
+supervacillatory measure in order to reduce the set of possible
+counterexamples to a small number (less than a trillion). A simple
+computer program that implements Pipletti's classification theorem
+for torsion-free Aramaic groups with simplectic socles can then
+finish the remaining cases.}
+
+\bigskip
+\beginsection 1. Introduction.
+
+This is the start of the introduction.
+\bye
+\end{externalDocument}
+
+
+
+\subsection{\LaTeX\ example}
+
+\begin{externalDocument}[
+ grfOptions={width=0.5\linewidth},
+% pages={1,3},
+ frame,
+ verbose=false,
+ compiler=lualatex,
+ showFilename,
+% crop,
+ force,
+ code,
+ docType=latex,
+ ext=tex,]{voss}
+\documentclass{report}
+%StartVisiblePreamble
+\usepackage{fontenc}\usepackage{libertinus}
+\usepackage{pst-all}
+%StopVisiblePreamble
+\begin{document}
+\psset{unit=0.8cm}
+\begin{pspicture}(-9,-15)(9,2)
+\psaxes(0,0)(-9,-15)(9,2)
+\psplot[algebraic,plotstyle=curve,curvature=1 1 0,
+ linewidth=1pt,linecolor=red]{-8}{8}{
+ 1 - 3876218985722260225*x^2/10892114744073986176
+ + 14975974793271450625*x^4/174273835905183778816
+ - 317095420958296875*x^6/26811359370028273664
+ + 194412970920703125*x^8/214490874960226189312
+ - 2090988251953125*x^10/53622718740056547328
+ + 99480224609375*x^12/107245437480113094656
+ - 7879638671875*x^14/697095343620735115264
+ + 152587890625*x^16/2788381374482940461056}
+\end{pspicture}
+\end{document}
+\end{externalDocument}
+
+
+\subsection{\ConTeXt\ example}
+
+
+\begin{externalDocument}[
+ grfOptions={width=0.3\linewidth},
+ pages={1,2,3},
+ frame,
+ verbose=false,
+ compiler=context,
+ showFilename,
+ runs=2,
+ force,
+ code,
+ docType=context,
+ ext=tex,]{voss}
+%StartVisiblePreamble
+\definehead
+ [myhead]
+ [section]
+\setuphead
+ [myhead]
+ [numberstyle=bold,
+ textstyle=bold,
+ before=\hairline\blank,
+ after=\nowhitespace\hairline]
+%StopVisiblePreamble
+\starttext
+\startstandardmakeup
+\midaligned{From Hasselt to America}
+\midaligned{by}
+\midaligned{J. Jonker and C. van Marle}
+\stopstandardmakeup
+\placecombinedlist[content]
+\chapter{Introduction}
+\input knuth \input knuth
+\chapter[rensselaer]{The Rensselaer family}
+\section{The first born}
+\input knuth
+\section{The early years}
+... in those days Hasselt was ...
+\section{Living and workin in America}
+\input knuth
+\chapter[lansing]{The Lansing family}
+... the Lansing family was also ...
+\chapter[cuyler]{The Cuyler family}
+... much later Tydeman Cuyler ...
+\myhead[headlines]{And the end}
+foo
+\stoptext
+\end{externalDocument}
+
+
+\section{Other options}
+
+\begin{description}
+\item[\texttt{force=false}] can speed up the comiling time for the document. If a created image/output
+already exists, there is no need to create it with the next run again and again.
+\item[\texttt{cleanup}] the auxiliary files of a \LaTeX-run are deleted, preset to \texttt{.aux}, \texttt{.log}.
+ It must be a comma seperated list of the extensions of the main file, s.g. \texttt{cleanup=\{aux,log\}}.
+\item[\texttt{copyToExampleDir}] name of a directory for the examples, must first be created by the user himself
+\item[\texttt{ExamplesDir}] move all examples into a directory
+\item[\texttt{eps}] create an eps from the pdf (historical)
+\end{description}
+
+
+
+
+
+\end{document}
+
+
diff --git a/macros/latex/contrib/hvextern/latex/hvextern-context.cfg b/macros/latex/contrib/hvextern/latex/hvextern-context.cfg
new file mode 100644
index 0000000000..f45cc86153
--- /dev/null
+++ b/macros/latex/contrib/hvextern/latex/hvextern-context.cfg
@@ -0,0 +1,22 @@
+%% This is file `hvextern-ctx.cfg',
+%%
+%% Copyright (C) 2016-22 Herbert Voß hvoss@tug.org
+%%
+%% It may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+
+\def\hvFileversion{0.01}
+\ProvidesFile{hvextern-ctx}[2022/04/21 v\hvFileversion: running context (HV)]
+
+\extern@ExampleType{context}
+ {\string\starttext}
+ {\string\stoptext}
+ {\perCent StartVisiblePreamble}
+ {\perCent StopVisiblePreamble}
+
+\endinput
diff --git a/macros/latex/contrib/hvextern/latex/hvextern-latex.cfg b/macros/latex/contrib/hvextern/latex/hvextern-latex.cfg
new file mode 100644
index 0000000000..8f186f9e58
--- /dev/null
+++ b/macros/latex/contrib/hvextern/latex/hvextern-latex.cfg
@@ -0,0 +1,31 @@
+%% This is file `hvextern-mp.cfg',
+%%
+%% Copyright (C) 2016-22 Herbert Voß hvoss@tug.org
+%%
+%% It may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+
+\def\hvFileversion{0.01}
+\ProvidesFile{hvextern-latex}[2022/04/21 v\hvFileversion: running latex (HV)]
+
+\extern@ExampleType{latex}%
+ {\string\begin\string{document\string}}%
+ {\string\end\string{document\string}}%
+ {\perCent StartVisiblePreamble}%
+ {\perCent StopVisiblePreamble}%
+
+% only for the sequence latex->dvips->ps2pdf
+\def\hv@extern@runLATEX#1#2#3#4{% path compiler file extension
+ \ifhv@extern@verbose \typeout{>>>> running #1#2 #3#4}\fi
+ \ShellEscape{#1#2\space #3#4}%
+ \ifhv@extern@verbose \typeout{>>>> running #1dvips #3}\fi
+ \ShellEscape{#1dvips\space #3.dvi}%
+ \ifhv@extern@verbose \typeout{>>>> running ps2pdf #3.ps}\fi
+ \ShellEscape{#1ps2pdf\space -dAutoRotatePages=/None\space -dALLOWPSTRANSPARENCY\space #3.ps}%
+}
+\endinput
diff --git a/macros/latex/contrib/hvextern/latex/hvextern-lua.cfg b/macros/latex/contrib/hvextern/latex/hvextern-lua.cfg
new file mode 100644
index 0000000000..85a3ee6920
--- /dev/null
+++ b/macros/latex/contrib/hvextern/latex/hvextern-lua.cfg
@@ -0,0 +1,22 @@
+%% This is file `hvextern-lua.cfg',
+%%
+%% Copyright (C) 2016-22 Herbert Voß hvoss@tug.org
+%%
+%% It may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+
+\def\hvFileversion{0.01}
+\ProvidesFile{hvextern-lua}[2022/04/23 v\hvFileversion: running Lua (HV)]
+
+\extern@ExampleType{lua}
+ {--StartVisibleMain}
+ {--StopVisibleMain}
+ {--StartVisiblePreamble}
+ {--StopVisiblePreamble}
+
+\endinput
diff --git a/macros/latex/contrib/hvextern/latex/hvextern-mp.cfg b/macros/latex/contrib/hvextern/latex/hvextern-mp.cfg
new file mode 100644
index 0000000000..9e42167f9c
--- /dev/null
+++ b/macros/latex/contrib/hvextern/latex/hvextern-mp.cfg
@@ -0,0 +1,32 @@
+%% This is file `hvextern-mp.cfg',
+%%
+%% Copyright (C) 2016-22 Herbert Voß hvoss@tug.org
+%%
+%% It may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+
+\def\hvFileversion{0.01}
+\ProvidesFile{hvextern-mp}[2022/04/21 v\hvFileversion: running MetaPost (HV)]
+
+\extern@ExampleType{mp}
+ {beginfig(1)}
+ {endfig;}
+ {\perCent StartVisiblePreamble}
+ {\perCent StopVisiblePreamble}
+
+\def\hv@extern@runMP#1#2#3#4{% path compiler file extension
+ \ifhv@extern@verbose \typeout{>>>> running #1#2 #3#4}\fi
+ \ShellEscape{#1#2\space -tex=tex\space #3#4}%
+ \ifhv@extern@verbose \typeout{>>>> running #1tex #3}\fi
+ \ShellEscape{#1tex\space "\string\input\space epsf\string\relax\string\nopagenumbers\string\epsfbox{#3.1}\string\bye"}%
+ \ifhv@extern@verbose \typeout{>>>> running #1dvips #3}\fi
+ \ShellEscape{#1dvips\space -j\space -E\space -o\space #3.eps\space epsf.dvi}%
+ \ifhv@extern@verbose \typeout{>>>> running #1epstopdf #3}\fi
+ \ShellEscape{#1epstopdf\space #3.eps}%
+}
+\endinput
diff --git a/macros/latex/contrib/hvextern/latex/hvextern-pl.cfg b/macros/latex/contrib/hvextern/latex/hvextern-pl.cfg
new file mode 100644
index 0000000000..656f2d8177
--- /dev/null
+++ b/macros/latex/contrib/hvextern/latex/hvextern-pl.cfg
@@ -0,0 +1,22 @@
+%% This is file `hvextern-pl.cfg',
+%%
+%% Copyright (C) 2016-22 Herbert Voß hvoss@tug.org
+%%
+%% It may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+
+\def\hvFileversion{0.01}
+\ProvidesFile{hvextern-pl}[2022/04/22 v\hvFileversion: running Perl (HV)]
+
+\extern@ExampleType{pl}
+ {\NumChar StartVisibleMain}
+ {\NumChar StopVisibleMain}
+ {\NumChar StartVisiblePreamble}
+ {\NumChar StopVisiblePreamble}
+
+\endinput
diff --git a/macros/latex/contrib/hvextern/latex/hvextern-py.cfg b/macros/latex/contrib/hvextern/latex/hvextern-py.cfg
new file mode 100644
index 0000000000..eaf51f8212
--- /dev/null
+++ b/macros/latex/contrib/hvextern/latex/hvextern-py.cfg
@@ -0,0 +1,27 @@
+%% This is file `hvextern-py.cfg',
+%%
+%% Copyright (C) 2016-22 Herbert Voß hvoss@tug.org
+%%
+%% It may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+
+\def\hvFileversion{0.01}
+\ProvidesFile{hvextern-py}[2022/04/22 v\hvFileversion: running Python (HV)]
+
+\extern@ExampleType{py}
+ {\NumChar StartVisibleMain}
+ {\NumChar StopVisibleMain}
+ {\NumChar StartVisiblePreamble}
+ {\NumChar StopVisiblePreamble}
+
+%\def\hv@extern@runPYTHON#1#2#3#4{% path compiler file extension
+% \ifhv@extern@verbose \typeout{>>>> running #1#2 #3#4}\fi
+% \ShellEscape{#1python2\space #3#4}% for special version
+%}
+
+\endinput
diff --git a/macros/latex/contrib/hvextern/latex/hvextern-tex.cfg b/macros/latex/contrib/hvextern/latex/hvextern-tex.cfg
new file mode 100644
index 0000000000..2baf3552f8
--- /dev/null
+++ b/macros/latex/contrib/hvextern/latex/hvextern-tex.cfg
@@ -0,0 +1,30 @@
+%% This is file `hvextern-mp.cfg',
+%%
+%% Copyright (C) 2016-22 Herbert Voß hvoss@tug.org
+%%
+%% It may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+
+\def\hvFileversion{0.01}
+\ProvidesFile{hvextern-latex}[2022/04/21 v\hvFileversion: running latex (HV)]
+
+\extern@ExampleType{tex}
+ {\perCent StartBody}
+ {\string\bye}
+ {\perCent StartVisiblePreamble}
+ {\perCent StopVisiblePreamble}
+
+\def\hv@extern@runTEX#1#2#3#4{% path compiler file extension
+ \ifhv@extern@verbose \typeout{>>>> running #1#2 #3#4}\fi
+ \ShellEscape{#1tex\space #3#4}%
+ \ifhv@extern@verbose \typeout{>>>> running #1dvips #3}\fi
+ \ShellEscape{#1dvips\space #3.dvi}%
+ \ifhv@extern@verbose \typeout{>>>> running ps2pdf #3.ps}\fi
+ \ShellEscape{#1ps2pdf\space -dAutoRotatePages=/None\space -dALLOWPSTRANSPARENCY\space #3.ps}%
+}
+\endinput
diff --git a/macros/latex/contrib/hvextern/latex/hvextern.sty b/macros/latex/contrib/hvextern/latex/hvextern.sty
new file mode 100644
index 0000000000..201f4ef7b1
--- /dev/null
+++ b/macros/latex/contrib/hvextern/latex/hvextern.sty
@@ -0,0 +1,332 @@
+%% This is file `hvextern.sty',
+%%
+%% Copyright (C) 2016-22
+%% Herbert Voss
+%%
+%% It may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+
+\def\hvexternFileversion{0.19}
+\ProvidesFile{hvextern}[2022/04/23 v\hvexternFileversion: package for running external documents (HV)]
+
+\RequirePackage{shellesc,xkeyval,graphicx,marginnote,fancyvrb,tikz,listings,ifplatform}
+\RequirePackage{tcolorbox}
+\tcbuselibrary{skins,breakable}
+
+\ifwindows
+ \def\hv@move{move }%
+ \def\hv@rm{del }%
+\else
+ \def\hv@move{mv }
+ \def\hv@rm{rm }
+\fi
+
+\newcounter{hv@extern@runs}
+\newcounter{@@@runs}
+\newsavebox\hv@extern@box
+\newlength\LineWidth
+\AtBeginDocument{\setlength\LineWidth{\dimexpr\linewidth-2\fboxsep-2\fboxrule}}
+\newlength\hv@extern@mpwidth \setlength\hv@extern@mpwidth{\z@}
+
+\define@key{hv}{progpath}{\def\hv@extern@progpath{#1}}
+\define@key{hv}{runsequence}[]{\def\hv@extern@runsequence{#1}}
+\define@key{hv}{runs}[1]{\setcounter{hv@extern@runs}{#1}}
+\define@key{hv}{grfOptions}[]{\def\hv@extern@grfOptions{#1}}
+\define@key{hv}{lstOptions}[]{\def\hv@extern@lstOptions{#1}}
+\define@key{hv}{BGpreamble}[black!12]{\def\hv@extern@BGpreamble{#1}}
+\define@key{hv}{BGbody}[black!8]{\def\hv@extern@BGbody{#1}}
+\define@key{hv}{BOpreamble}[black!12]{\def\hv@extern@BOpreamble{#1}}
+\define@key{hv}{BObody}[black!8]{\def\hv@extern@BObody{#1}}
+\define@key{hv}{docType}[latex]{\def\hv@extern@docType{#1}}
+\define@key{hv}{caption}[]{\def\hv@extern@caption{#1}}
+\define@key{hv}{label}[]{\def\hv@extern@label{#1}}
+\define@key{hv}{pages}[1]{\def\hv@extern@pages{#1}}
+\define@key{hv}{cropmargin}[2]{\def\hv@extern@cropmargin{#1 }}
+\define@key{hv}{mpwidth}[0pt]{\setlength\hv@extern@mpwidth{#1}}
+\define@key{hv}{ext}[tex]{\def\hv@extern@ext{.#1}}
+\define@boolkey{hv}[hv@extern@]{usefancyvrb}[true]{}
+\define@boolkey{hv}[hv@extern@]{showFilename}[true]{}
+\define@boolkey{hv}[hv@extern@]{code}[true]{}
+\define@boolkey{hv}[hv@extern@]{force}[true]{}
+\define@boolkey{hv}[hv@extern@]{crop}[true]{}
+\define@boolkey{hv}[hv@extern@]{biber}[true]{}
+\define@boolkey{hv}[hv@extern@]{xindex}[true]{}
+\define@key{hv}{xindexOptions}[]{\def\hv@extern@xindexOptions{#1}}
+\define@boolkey{hv}[hv@extern@]{includegraphic}[true]{}
+\define@boolkey{hv}[hv@extern@]{inline}[true]{\hv@extern@codefalse}
+\define@boolkey{hv}[hv@extern@]{frame}[true]{}
+\define@boolkey{hv}[hv@extern@]{float}[true]{}
+%\define@boolkey{hv}[hv@extern@]{cleanup}[true]{}
+\define@key{hv}{cleanup}[{aux,log}]{\def\hv@extern@cleanup{#1}}%
+\define@boolkey{hv}[hv@extern@]{moveToExampleDir}[true]{}
+\define@key{hv}{align}[\centering]{\def\hv@extern@align{#1}}
+\define@key{hv}{ExampleDir}[Examples]{%
+ \ifhv@extern@moveToExampleDir
+ \def\hv@extern@ExamplesDir{#1/}%
+ \else
+ \def\hv@extern@ExamplesDir{}%
+ \fi
+}
+\define@boolkey{hv}[hv@extern@]{eps}[true]{}
+\define@boolkey{hv}[hv@extern@]{verbose}[true]{}
+\def\hv@typeout#1{\ifhv@extern@verbose\typeout{#1}\fi}
+
+%\define@key{hv}{compiler}[pdflatex]{\def\hv@extern@compiler{#1}}
+\define@choicekey*+{hv}{compiler}[\val\nr]{mpost,tex,latex,luatex,python3,perl,lua,xetex,pdflatex,lualatex,xelatex,context}[pdflatex]{%
+% \hv@typeout{>>>> Compiler type \nr}%
+ \def\hv@extern@compiler{\val}%
+ \edef\hv@extern@compilerNo{\nr}%
+}{\PackageWarning{hvextern}{erroneous input (#1) for compiler ignored. Using pdflatex.}%
+ \def\hv@extern@compiler{pdflatex}%
+ \def\hv@extern@compilerNo{6}%
+ }
+
+\def\ResetKeys{%
+ \setkeys{hv}{
+ showFilename=false,% Dateinamen im Rand angeben
+ ext=tex,% file extension
+ code=false,% show Code
+ crop=false,% erzeugte PDF "croppen"
+ compiler=pdflatex,% zu verwendener Compiler
+ grfOptions={},% Optionen der einzubindenden Grafik
+ lstOptions={},% Optionen für das Listing
+ BGpreamble=black!12,% Backgroundcolor for preamble
+ BGbody=black!8,% Backgroundcolor for body
+ BOpreamble=black!12,% Bodercolor for preamble
+ BObody=black!8,% Bodercolor for body
+ includegraphic=true,% Grafik einbinden oder User überlassen
+ inline=false,% Grafik nicht in derselben Zeile
+ runs=1,% Anzahl Compiler-Durchläufe
+ runsequence={},% Im Moment nicht aktiv
+ biber=false,% Biber laufen lassen?
+ xindex=false,% xindex laufen lassen?
+ xindexOptions={},% options for xindex
+ force=false,% Compiler, auch wenn PDF existiert?
+ frame=false,% keinen Rahmen um Abbildung
+ float=false,% nicht als Gleitumgebung
+ caption=,% keine Caption
+ label=,% kein Label
+ pages=1,% welche Seiten auszugeben sind
+ docType=latex,% LaTeX example Code
+ cleanup={},% Hilfsdateien nicht löschen
+ moveToExampleDir=false,% Verschieben nach ExamplesDir
+ ExampleDir=Examples,% Unterverzeichnis für Beispiele
+ align=\centering,% Ausgabe zentrieren
+ mpwidth=0pt,% no minipage
+ usefancyvrb=false,% use VerbatimInput instead of listings
+ progpath={},
+ cropmargin=2,% 2pb margin
+ eps=false,% create an eps output?
+ }
+}
+\ResetKeys
+
+{\catcode`\%=12
+ \catcode`\#=12
+ \gdef\perCent{%}
+ \gdef\DoubleperCent{%%}
+ \gdef\NumChar{#}
+ \gdef\DoubleNumChar{##}
+}
+
+\def\run@hv@extern@cleanup#1{\expandafter\run@hv@extern@cleanup@i#1,\@nil}
+\def\run@hv@extern@cleanup@i#1,#2\@nil{%
+ \def\hv@next{}%
+ \ifx\relax#1\relax
+ \else
+ \hv@typeout{>>>> Delete file \hv@extern@ExamplesDir\hvExternDateiname.#1}%
+ \ShellEscape{\hv@rm \hv@extern@ExamplesDir\hvExternDateiname.#1}%
+ \ifx\relax#2\relax\else
+ \def\hv@next{\run@hv@extern@cleanup@i#2,\@nil}%
+ \fi
+ \fi
+ \hv@next
+}
+
+
+\lstset{belowskip=0pt,aboveskip=0pt}% global
+\tcbset{breakable,left=2pt,right=2pt,top=2pt,bottom=2pt,boxsep=0pt}
+
+\newcommand\PreambleVerbatim[2][]{\begin{tcolorbox}\VerbatimInput[#1]{#2}\end{tcolorbox}}
+
+\newcommand\BodyVerbatim[2][]{\begin{tcolorbox}\VerbatimInput[#1]{#2}\end{tcolorbox}}
+
+\newcommand\PreambleListing[2][]{\begin{tcolorbox}\expandafter\lstinputlisting\expandafter[#1]{#2}\end{tcolorbox}}
+
+\newcommand\BodyListing[2][]{\begin{tcolorbox}\expandafter\lstinputlisting\expandafter[#1]{#2}\end{tcolorbox}}
+
+\newcounter{hv@example@counter}
+
+\newcommand\extern@ExampleType[5]{%
+ \@namedef{#1@initTextFancy}{\edef\FancyVerbStartString{#2}\edef\FancyVerbStopString{#3}}% text
+ \@namedef{#1@initPreambleFancy}{\edef\FancyVerbStartString{#4}\edef\FancyVerbStopString{#5}}% code
+ \@namedef{#1@initText}{linerange={#2}-{#3},includerangemarker=false}% text
+ \@namedef{#1@initPreamble}{linerange={#4}-{#5},includerangemarker=false}% code
+}% ^^to prevent problems with lua comments
+
+\input{hvextern-mp.cfg}
+\input{hvextern-tex.cfg}
+\input{hvextern-latex.cfg}
+\input{hvextern-context.cfg}
+\input{hvextern-py.cfg}
+\input{hvextern-pl.cfg}
+\input{hvextern-lua.cfg}
+
+%%
+%% [#1]: Optionen #2: Dateiname
+%%
+\newenvironment{ErstelleGrafik}[2][]{%
+ \xdef\hvExternDateiname{#2-\arabic{hv@example@counter}}%
+ \setkeys{hv}{#1}% \begin
+ \expandafter\IfFileExists\expandafter{\hv@extern@ExamplesDir\hvExternDateiname.pdf}{}{%
+ \expandafter\IfFileExists\expandafter{\hv@extern@ExamplesDir\hvExternDateiname.png}{}{%
+ \expandafter\IfFileExists\expandafter{\hv@extern@ExamplesDir\hvExternDateiname.txt}{}{%
+ \global\hv@extern@forcetrue}}}% set force, if no pdf or png exists
+ \begingroup
+ \hv@typeout{>>> writing file \hvExternDateiname\hv@extern@ext ...}%
+ \filecontents[force,noheader]{\hvExternDateiname\hv@extern@ext}
+ }
+ {\endfilecontents% \end
+ \hv@typeout{>>> ... done}%
+ \global\stepcounter{hv@example@counter}%
+ \endgroup
+ \ifhv@extern@force
+ \hv@typeout{>>> force=true: running \hv@extern@progpath\hv@extern@compiler~ \hvExternDateiname\hv@extern@ext ...}%
+ \setcounter{@@@runs}{\value{hv@extern@runs}}%
+ \loop\ifnum\the@@@runs > 0\relax
+ \ifcase\hv@extern@compilerNo \relax % we have metapost
+ \hv@typeout{>>>> running mpost \hvExternDateiname\hv@extern@ext}%
+ \hv@extern@runMP{\hv@extern@progpath}{\hv@extern@compiler}{\hvExternDateiname}{\hv@extern@ext}%
+ \or %1
+ \hv@typeout{>>>> running tex \hvExternDateiname\hv@extern@ext}%
+ \hv@extern@runTEX{\hv@extern@progpath}{\hv@extern@compiler}{\hvExternDateiname}{\hv@extern@ext}%
+ \or %2
+ \hv@typeout{>>>> running \hv@extern@compiler~ \hvExternDateiname\hv@extern@ext}%
+ \hv@extern@runLATEX{\hv@extern@progpath}{\hv@extern@compiler}{\hvExternDateiname}{\hv@extern@ext}%
+ \else
+ \hv@typeout{>>>> running \hv@extern@compiler~ \hvExternDateiname\hv@extern@ext}%
+ \ShellEscape{\hv@extern@progpath\hv@extern@compiler\space\hvExternDateiname\hv@extern@ext}%
+ \fi
+ \addtocounter{@@@runs}{-1}%
+ \repeat
+ \hv@typeout{>>> ... done}%
+ \ifhv@extern@biber
+ \ShellEscape{biber \hvExternDateiname}% NAch biber nochmal latex
+ \ShellEscape{\hv@extern@progpath\hv@extern@compiler\space\hvExternDateiname}%
+ \fi
+ \ifhv@extern@xindex
+ \ShellEscape{xindex \hv@extern@xindexOptions\space \hvExternDateiname.idx}% NAch xindex nochmal latex
+ \ShellEscape{\hv@extern@progpath\hv@extern@compiler\space\hvExternDateiname}%
+ \fi
+ \ifhv@extern@crop
+ \ShellEscape{pdfcrop --margins \hv@extern@cropmargin \hvExternDateiname}%
+ \ShellEscape{\hv@move \hvExternDateiname-crop.pdf \hvExternDateiname.pdf}%
+ \fi
+ \ifhv@extern@eps
+ \ShellEscape{pdftops -eps -f 1 -l 1 \hvExternDateiname.pdf}%
+ \fi
+ \fi
+ \ifhv@extern@code%-------------- Code Part
+ \par\noindent
+ \begingroup
+ \ifdim\hv@extern@mpwidth>\z@ \minipage[t]{\hv@extern@mpwidth}\vspace{0pt}\fi
+ \ifhv@extern@usefancyvrb
+ \@nameuse{\hv@extern@docType @initPreambleFancy}%
+ \edef\@@@temp{\@nameuse{\hv@extern@docType @initPreamble}}%
+ % we need lstinputlisting, because \VerbatimInput doesn't work in a box
+ \savebox\hv@extern@box{\expandafter\lstinputlisting\expandafter[\@@@temp]{\hvExternDateiname\hv@extern@ext}}%
+% \savebox\hv@extern@box{\VerbatimInput{\hvExternDateiname\hv@extern@ext}}%
+ \ifdim\wd\hv@extern@box > \z@
+ \expandafter\fvset\expandafter{\hv@extern@lstOptions}%
+ \tcbset{colback=\hv@extern@BGpreamble,colframe=\hv@extern@BOpreamble}%
+ \PreambleVerbatim{\hvExternDateiname\hv@extern@ext}%
+ \fi
+ \else
+ \edef\@@@temp{\@nameuse{\hv@extern@docType @initPreamble}}%
+ \savebox\hv@extern@box{\expandafter\lstinputlisting\expandafter[\@@@temp]{\hvExternDateiname\hv@extern@ext}}%
+ \ifdim\wd\hv@extern@box>\z@
+ \expandafter\lstset\expandafter{\hv@extern@lstOptions}%
+ \tcbset{colback=\hv@extern@BGpreamble,colframe=\hv@extern@BOpreamble}%
+ \PreambleListing[\@@@temp]{\hvExternDateiname\hv@extern@ext}%
+ \fi
+ \fi
+ \ifhv@extern@showFilename
+ \marginnote{\rotatebox{90}{\hvExternDateiname\hv@extern@ext}}%[-15mm]%
+ \fi
+%
+ \ifhv@extern@usefancyvrb
+ \@nameuse{\hv@extern@docType @initTextFancy}%
+ \expandafter\fvset\expandafter{\hv@extern@lstOptions}%
+ \tcbset{colback=\hv@extern@BGbody,colframe=\hv@extern@BObody}%
+ \expandafter\BodyVerbatim\expandafter[\hv@extern@lstOptions]{\hvExternDateiname\hv@extern@ext}%
+ \else
+ \expandafter\lstset\expandafter{\hv@extern@lstOptions}%
+ \edef\@@@temp{\@nameuse{\hv@extern@docType @initText}}%
+ \tcbset{colback=\hv@extern@BGbody,colframe=\hv@extern@BObody}%
+ \BodyListing[\@@@temp]{\hvExternDateiname\hv@extern@ext}%
+ \fi
+ \ifdim\hv@extern@mpwidth > \z@\relax \endminipage\fi
+ \endgroup
+ \fi
+ \ifhv@extern@code\else
+ \ifhv@extern@showFilename
+ \marginnote{\rotatebox{90}{\hvExternDateiname}}%
+ \fi
+ \fi
+ \ifhv@extern@moveToExampleDir
+% \ShellEscape{mkdir\space\hv@extern@ExamplesDir/}%
+ \ShellEscape{\hv@move \hvExternDateiname.*\space \hv@extern@ExamplesDir}%
+ \fi
+ \ifhv@extern@includegraphic
+ \ifhv@extern@inline
+ \expandafter\includegraphics\expandafter[\hv@extern@grfOptions]{\hv@extern@ExamplesDir\hvExternDateiname}%
+ \else
+ \ifhv@extern@float
+ \begin{figure}[!htb]
+ \else
+ \ifdim\hv@extern@mpwidth>\z@
+ \hfill\minipage[t]{\dimexpr\linewidth-\hv@extern@mpwidth-1em\relax}\vspace{0pt}%
+ \else
+ \par\noindent\begingroup
+ \fi
+ \fi
+ \hv@extern@align
+ \ifhv@extern@frame
+ \expandafter\@for\expandafter\next\expandafter:\expandafter=\hv@extern@pages\do{%
+ \fbox{\expandafter\includegraphics\expandafter[\hv@extern@grfOptions,page=\next]{\hv@extern@ExamplesDir\hvExternDateiname}}%
+ \hspace{5pt}}\hspace*{-5pt}%
+ \else
+ \expandafter\@for\expandafter\next\expandafter:\expandafter=\hv@extern@pages\do{%
+ \expandafter\includegraphics\expandafter[\hv@extern@grfOptions,page=\next]{\hv@extern@ExamplesDir\hvExternDateiname}%
+ \hspace{5pt}}\hspace*{-5pt}%
+ \fi
+ \ifx\hv@extern@caption\@empty\else\caption{\hv@extern@caption}\fi
+ \ifx\hv@extern@label\@empty\else\label{\hv@extern@label}\fi
+ \ifhv@extern@float
+ \end{figure}%
+ \else
+ \ifdim\hv@extern@mpwidth>\z@ \endminipage\else\par\endgroup\fi
+ \fi
+ \fi
+ \else% no graphic, only text
+ \ifdim\hv@extern@mpwidth>\z@
+ \hfill\minipage[t]{\dimexpr\linewidth-\hv@extern@mpwidth-1em\relax}\vspace{0pt}
+ \noindent\VerbatimInput{\hv@extern@ExamplesDir\hvExternDateiname.txt}
+ \endminipage
+ \else
+ \noindent\VerbatimInput{\hv@extern@ExamplesDir\hvExternDateiname.txt}
+ \fi
+ \fi
+ \ifhv@extern@force\run@hv@extern@cleanup{\hv@extern@cleanup}\fi% cleanup
+}
+\stepcounter{hv@example@counter}%
+%
+\let\externalDocument\ErstelleGrafik
+\let\endexternalDocument\endErstelleGrafik
+%%
+\endinput
diff --git a/macros/latex/contrib/llncsconf/CHANGELOG.md b/macros/latex/contrib/llncsconf/CHANGELOG.md
index 2a0f08412e..fa9bab620c 100644
--- a/macros/latex/contrib/llncsconf/CHANGELOG.md
+++ b/macros/latex/contrib/llncsconf/CHANGELOG.md
@@ -5,7 +5,22 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
-## 1.1.0 - 2020-05-10
+## [1.2.0] - 2022-04-24
+
+### Added
+
+- The default copyright note can be overwritten by redefining the command `\copyrightnote`.
+
+### Changed
+
+- If available, use pdfmanagement instead of `\pdfpagesattr` [[#12](https://github.com/adbrucker/llncsconf/issues/12)]
+- If `intended` is used, the note is put on each page [[#16](https://github.com/adbrucker/llncsconf/issues/16)]
+
+### Fixed
+
+- Reduced size of author statement in footnote [[#15](https://github.com/adbrucker/llncsconf/issues/15)]
+
+## [1.1.0] - 2020-05-10
### Added
@@ -17,4 +32,3 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
- Initial version uploaded to CTAN.
-[1.1.0]: https://git.logicalhacking.com/adbrucker/llncsconf/compare/v1.0.0...v1.1.0
diff --git a/macros/latex/contrib/llncsconf/README.md b/macros/latex/contrib/llncsconf/README.md
index cbe60fba6f..bae0f0202f 100644
--- a/macros/latex/contrib/llncsconf/README.md
+++ b/macros/latex/contrib/llncsconf/README.md
@@ -1,54 +1,76 @@
# llncsconf
-LaTeX package extending Springer's llncs class.
+LaTeX package extending [Springer's llncs class](https://ctan.org/pkg/llncs).
-## Installation
+## Installation
-Copy `llncsconf.sty` in a directory that is searched by LaTeX
+This package is [available on CTAN](https://www.ctan.org/pkg/llncsconf)
+and thus included TeXLive and MiKTeX. In case the distributed version
+is too old, copy `llncsconf.sty` in a directory that is searched by LaTeX
(e.g,. either your `texmf` tree or the local directory with your main
-LaTeX file.
+LaTeX file).
## Usage
In a LaTeX file that uses Springer's `llncs` class, just add
+
```tex
\usepackage{llncsconf}
```
-to use the style. The package supports the following options:
- * `crop`: crops the page (PDF) to the page size (152x235mm) used by
- the LNCS proceedings books (and the official PDFs offered by
- Springer). Please ensure that you *do not* have the option
- `a4paper` activated. Otherwise, cropping produces wrong results.
- * `rcsinfo`: adds RCS revision information to the first page of
- the document.
- * `svninfo`: adds subversion/svn revision information to the
- first page of the document.
- * `llncs`: typesets a copy of Springer's copyright note. This should
- satisfy Springer's requirements for self-archiving.
- You need to supply the DOI using `\llncsdoi{DOI}`.
- * `proceedings`: typesets a note in which proceedings the paper was
- published (similar to `llncs` without Springer's availability note).
- * `accepted`: adds a *accepted for publication at ...* note
- to the first page. This is useful for the phase where the camera
- ready version is prepared, but the publisher did not yet publish it.
- * `submitted`: adds a *submitted to ... please to no distribute* note
- to the first page.
- * `intended`: adds a *submitted to ... please to no distribute* note
- to the first page.
-
-Moreover, the package requires two commands to be executed:
+
+to use the style.
+
+The package supports the following general options:
+
+* `crop`: crops the page (PDF) to the page size (152x235mm) used by
+ the LNCS proceedings books (and the official PDFs offered by
+ Springer). Please ensure that you *do not* have the option
+ `a4paper` activated. Otherwise, cropping produces wrong results.
+* `rcsinfo`: adds RCS revision information to the first page of
+ the document.
+* `svninfo`: adds subversion/svn revision information to the
+ first page of the document.
+
+To indicate the state of the paper, the package supports following choices:
+
+* `intended`: adds a *submitted to ... please to no distribute* note
+ to each page. The default copyright note can be overwritten by
+ redefining the command `\copyrightnote`.
+* `submitted`: adds a *submitted to ... please to no distribute* note
+ to each page. The default copyright note can be overwritten by
+ redefining the command `\copyrightnote`.
+* `accepted`: adds a *accepted for publication at ...* note
+ to the first page. This is useful for the phase where the camera
+ ready version is prepared, but the publisher did not yet publish it.
+* `proceedings`: typesets a note in which proceedings the paper was
+ published (similar to `llncs` without Springer's availability note).
+* `llncs`: typesets a copy of Springer's copyright note. This should
+ satisfy Springer's requirements for self-archiving.
+ You need to supply the DOI using `\llncsdoi{DOI}`.
+
+To display the state information properly, additional commands are required:
+
* `\conference{name of the conference}` which takes one argument,
i.e., the name of the conference. This is used when one of the
- options `submitted` or `intended` is used for loading the package.
+ options `intended`, `submitted`, or `accepted` is used for loading
+ the package.
* `\llncs{book editors and title}{start page}` which takes two
arguments: first the information about the book (e.g., editors,
title) and, second, the start page of the chapter (contribution).
* `\llncsdoi{DOI}` which takes one argument,
i.e., the DOI of the final publication available at Springer's web site.
+| State | `\conference` | `\llncs` | `\llncsdoi` |
+| -- | -- | -- | -- |
+| intended | yes | no | no |
+| submitted | yes | no | no |
+| accepted | yes | no | no |
+| proceedings | no | yes | no |
+| llncs | no | yes | yes |
+
## Self-Archiving
-Sprinter states in his [Springer's Consent to Publish v3](http://resource-cms.springer.com/springer-cms/rest/v1/content/731196/data/v3):
+Springer states in his [Springer's Consent to Publish v3](https://resource-cms.springernature.com/springer-cms/rest/v1/content/15433008/data/Contract_Book_Contributor_Consent_to_Publish_LNCS_SIPAut):
> Author may only post his/her own version, provided acknowledgment is given
> to the original source of publication and a link is inserted to the published
@@ -62,7 +84,6 @@ of the published paper.
This package uses `https://doi.org` as `http://dx.doi.org`
[is deprecated](https://www.doi.org/factsheets/DOIIdentifierSpecs.html).
-
## Authors
Main author: [Achim D. Brucker](http://www.brucker.ch/)
@@ -78,8 +99,9 @@ the LPPL version 1.3c or (at your opinion) any later version.
SPDX-License-Identifier: LPPL-1.3c+ OR BSD-2-Clause
-## Master Repository
+## Upstream Repository
-The master git repository for this project is hosted by the [Software
-Assurance & Security Research Team](https://logicalhacking.com) at
+The upstream git repository, i.e., the single source of truth, for this
+project is hosted by the [Software Assurance & Security Research
+Team](https://logicalhacking.com) at
<https://git.logicalhacking.com/adbrucker/llncsconf>.
diff --git a/macros/latex/contrib/llncsconf/example.tex b/macros/latex/contrib/llncsconf/example/example.tex
index 6df9fdc455..0ab3c2b7e1 100644
--- a/macros/latex/contrib/llncsconf/example.tex
+++ b/macros/latex/contrib/llncsconf/example/example.tex
@@ -1,7 +1,6 @@
\documentclass[final, runningheads, USenglish, pdftex]{llncs}
\usepackage{lipsum}
-%\usepackage[proceedings,crop]{llncsconf}
-\usepackage[llncs,crop]{llncsconf}
+\usepackage{llncsconf}
\conference{International Conference on \LaTeX-Hacks}
\llncs{Anonymous et al.\ (eds).\ \emph{Proceedings of the International
diff --git a/macros/latex/contrib/llncsconf/example/example_accepted_crop.pdf b/macros/latex/contrib/llncsconf/example/example_accepted_crop.pdf
new file mode 100644
index 0000000000..4077082987
--- /dev/null
+++ b/macros/latex/contrib/llncsconf/example/example_accepted_crop.pdf
Binary files differ
diff --git a/macros/latex/contrib/llncsconf/example/example_accepted_nocrop.pdf b/macros/latex/contrib/llncsconf/example/example_accepted_nocrop.pdf
new file mode 100644
index 0000000000..33a472293d
--- /dev/null
+++ b/macros/latex/contrib/llncsconf/example/example_accepted_nocrop.pdf
Binary files differ
diff --git a/macros/latex/contrib/llncsconf/example/example_intended_crop.pdf b/macros/latex/contrib/llncsconf/example/example_intended_crop.pdf
new file mode 100644
index 0000000000..54f166b140
--- /dev/null
+++ b/macros/latex/contrib/llncsconf/example/example_intended_crop.pdf
Binary files differ
diff --git a/macros/latex/contrib/llncsconf/example/example_intended_nocrop.pdf b/macros/latex/contrib/llncsconf/example/example_intended_nocrop.pdf
new file mode 100644
index 0000000000..13363ba000
--- /dev/null
+++ b/macros/latex/contrib/llncsconf/example/example_intended_nocrop.pdf
Binary files differ
diff --git a/macros/latex/contrib/llncsconf/example/example_llncs_crop.pdf b/macros/latex/contrib/llncsconf/example/example_llncs_crop.pdf
new file mode 100644
index 0000000000..7695910839
--- /dev/null
+++ b/macros/latex/contrib/llncsconf/example/example_llncs_crop.pdf
Binary files differ
diff --git a/macros/latex/contrib/llncsconf/example/example_llncs_nocrop.pdf b/macros/latex/contrib/llncsconf/example/example_llncs_nocrop.pdf
new file mode 100644
index 0000000000..a674016d3d
--- /dev/null
+++ b/macros/latex/contrib/llncsconf/example/example_llncs_nocrop.pdf
Binary files differ
diff --git a/macros/latex/contrib/llncsconf/example/example_proceedings_crop.pdf b/macros/latex/contrib/llncsconf/example/example_proceedings_crop.pdf
new file mode 100644
index 0000000000..fb044bc33d
--- /dev/null
+++ b/macros/latex/contrib/llncsconf/example/example_proceedings_crop.pdf
Binary files differ
diff --git a/macros/latex/contrib/llncsconf/example.pdf b/macros/latex/contrib/llncsconf/example/example_proceedings_nocrop.pdf
index 99910c31fd..74532aac3c 100644
--- a/macros/latex/contrib/llncsconf/example.pdf
+++ b/macros/latex/contrib/llncsconf/example/example_proceedings_nocrop.pdf
Binary files differ
diff --git a/macros/latex/contrib/llncsconf/example/example_submitted_crop.pdf b/macros/latex/contrib/llncsconf/example/example_submitted_crop.pdf
new file mode 100644
index 0000000000..a31cf2f4dc
--- /dev/null
+++ b/macros/latex/contrib/llncsconf/example/example_submitted_crop.pdf
Binary files differ
diff --git a/macros/latex/contrib/llncsconf/example/example_submitted_nocrop.pdf b/macros/latex/contrib/llncsconf/example/example_submitted_nocrop.pdf
new file mode 100644
index 0000000000..c4075c85d4
--- /dev/null
+++ b/macros/latex/contrib/llncsconf/example/example_submitted_nocrop.pdf
Binary files differ
diff --git a/macros/latex/contrib/llncsconf/llncsconf.sty b/macros/latex/contrib/llncsconf/llncsconf.sty
index 42d71bddbf..a1c30b81d8 100644
--- a/macros/latex/contrib/llncsconf/llncsconf.sty
+++ b/macros/latex/contrib/llncsconf/llncsconf.sty
@@ -11,7 +11,7 @@
%% SPDX-License-Identifier: LPPL-1.3c+ OR BSD-2-Clause
\NeedsTeXFormat{LaTeX2e}\relax
\ProvidesPackage{llncsconf}
- [2020/05/10 v1.1.0 %
+ [2022/04/24 v1.2.0 %
Tweaks for the llncs class.]
%
\RequirePackage{ifthen}
@@ -27,6 +27,7 @@
\newboolean{proceedings}
%
\DeclareOption{crop}{\setboolean{crop}{true}}
+\DeclareOption{nocrop}{\setboolean{crop}{false}}
\DeclareOption{rcsinfo}{\setboolean{rcsinfo}{true}}
\DeclareOption{svninfo}{\setboolean{svninfo}{true}}
\DeclareOption{accepted}{\setboolean{accepted}{true}}
@@ -42,16 +43,32 @@
\def\llncs#1#2{\gdef\@llncs{#1}\ifthenelse{\boolean{llncs} \OR \boolean{proceedings}}{\setcounter{page}{#2}}{}}
\gdef\@llncsdoi{UNKNOWN}
\def\llncsdoi#1{\gdef\@llncsdoi{#1}{}}
+
+\newcommand{\copyrightnote}{\copyright\ \number\year, \toc@uthor}
% <crop>
\ifthenelse{\boolean{crop}}{%
+\ExplSyntaxOn
+\@ifundefined{pdfmanagement_add:nnn}{%
\@ifclasswith{llncs}{a4paper}{%
\pdfpagesattr{/CropBox [92 114 523 780]}%
}{%
\pdfpagesattr{/CropBox [92 65 523 731]}% LNCS page: 152x235 mm
}%
+}{%
+ \@ifclasswith{llncs}{a4paper}{%
+ \pdfmanagement_add:nnn {Pages}{CropBox}{[92~114~523~780]}
+ }{%
+ \pdfmanagement_add:nnn {Pages}{CropBox}{[92~62~523~731]}
+ }%
+}%
+\ExplSyntaxOff
}{}
% </crop>
+
+
+
+
\def\ps@svninfofirst{\let\@mkboth\@gobbletwo\let\@oddhead\@empty\let\@evenhead\@empty
\def\@oddfoot{\reset@font\scriptsize
\vbox to\z@{\parindent=\z@\vss
@@ -88,24 +105,26 @@
\def\@oddfoot{\reset@font\scriptsize
\vbox to\z@{\parindent=\z@\vss
Submitted to \@conference, please do \emph{not} distribute.\\
- \copyright\ \number\year, \@author
- }}\let\@evenfoot\@oddfoot}
+ \copyrightnote%
+ }}\let\@evenfoot\@oddfoot}
\def\ps@submittedfirst{\let\@mkboth\@gobbletwo\let\@oddhead\@empty\let\@evenhead\@empty
\def\@oddfoot{\reset@font\scriptsize
\vbox to\z@{\parindent=\z@\vss
Submitted to \@conference, please do \emph{not} distribute.\\
- \copyright\ \number\year, \@author
+ \copyrightnote%
}}\let\@evenfoot\@oddfoot}
%
\def\ps@intended{\let\@mkboth\@gobbletwo
\def\@oddfoot{\reset@font\scriptsize
\vbox to\z@{\parindent=\z@\vss
- Intended for submission to \@conference, please do \emph{not} distribute.
+ Intended for submission to \@conference, please do \emph{not} distribute.\\
+ \copyrightnote%
}}\let\@evenfoot\@oddfoot}
\def\ps@intendedfirst{\let\@mkboth\@gobbletwo\let\@oddhead\@empty\let\@evenhead\@empty
\def\@oddfoot{\reset@font\scriptsize
\vbox to\z@{\parindent=\z@\vss
- Intended for submission to \@conference, please do \emph{not} distribute.
+ Intended for submission to \@conference, please do \emph{not} distribute.\\
+ \copyrightnote%
}}\let\@evenfoot\@oddfoot}
%
\def\ps@llncs{\let\@mkboth\@gobbletwo\let\@oddhead\@empty\let\@evenhead\@empty
@@ -153,7 +172,7 @@
% </accepted>
% <intended>
\ifthenelse{\boolean{intended}}{%
-% \pagestyle{intended}%
+\pagestyle{intended}%
\let\old@mkttl=\maketitle%
\def\maketitle{\old@mkttl\thispagestyle{intendedfirst}}%
}{}
diff --git a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf
index 96aa6c8b8a..d5b650b1a6 100644
--- a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf
+++ b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex
index 48ef982e3d..b6f426cdbf 100644
--- a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex
+++ b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex
@@ -153,7 +153,7 @@
{\ttfamily c pierquet -- at -- outlook . fr}
\end{tabular}
}
-\date{Version 1.0.8 -- 16 Mars 2022}
+\date{Version 1.0.9 -- 24 Avril 2022}
\newcommand\Cle[1]{{\bfseries\sffamily\textlangle #1\textrangle}}
@@ -171,7 +171,7 @@
Quelques commandes pour des courbes \textit{lisses} avec gestion des extrema et des dérivées.
-Quelques commandes pour simuler une fenêtre de logiciel de calcul formel.
+Quelques commandes pour simuler une fenêtre de logiciel de calcul formel, en \TikZ.
Quelques environnements (\textsf{tcbox}) pour présenter du code \textsf{python} ou \textsf{pseudocode}.
@@ -179,6 +179,8 @@ Quelques environnements (\textsf{tcbox}) pour présenter des commandes dans un t
Un cartouche (\textsf{tcbox}) pour présenter des codes de partage \textsf{capytale}.
+Une commande pour tracer un pavé en droit, en \TikZ, avec création des nœuds liés aux sommets.
+
\vfill
\hrule
@@ -1366,8 +1368,101 @@ Le \textsf{cartouche} peut être \og cliquable \fg{} grâce à \ctex{href}.
\newpage
+\section{Pavé droit \og simple \fg}
+
+\subsection{Introduction}
+
+\begin{codeidee}
+L'idée est d'obtenir un pavé droit, dans un environnement \TikZ, avec les nœuds créés et nommés directement pour utilisation ultérieure.
+\end{codeidee}
+
+\subsection{Commandes}
+
+\begin{codetex}[listing only]
+...
+\begin{tikzpicture}[<options>]
+ \paveCF[<options>]
+ ...
+\end{tikzpicture}
+\end{codetex}
+
+\begin{codecles}
+Quelques \Cle{clés} sont disponibles pour cette commande :
+
+\begin{itemize}
+ \item \Cle{largeur} : largeur du pavé ;\hfill{}défaut \Cle{2}
+ \item \Cle{profondeur} : profondeur du pavé ;\hfill{}défaut \Cle{1}
+ \item \Cle{hauteur} : hauteur du pavé ;\hfill{}défaut \Cle{1.25}
+ \item \Cle{angle} : angle de fuite de la perspective ;\hfill{}défaut \Cle{30}
+ \item \Cle{fuite} : coefficient de fuite de la perspective ;\hfill{}défaut \Cle{0.5}
+ \item \Cle{sommets} : liste des sommets (avec délimiteur § !) ;\hfill{}défaut \Cle{A§B§C§D§E§F§G§H}
+ \item \Cle{epaisseur} : épaisseur des arêtes (en \textit{langage simplifié} \TikZ) ;\hfill{}défaut \Cle{thick}
+ \item \Cle{aff} : booléen pour afficher les noms des sommets ;\hfill{}défaut \Cle{false}
+ \item \Cle{plein} : booléen pour ne pas afficher les arêtes \textit{invisibles} ;\hfill{}défaut \Cle{false}
+ \item \Cle{cube} : booléen pour préciser qu'il s'agit d'un cube (seule la valeur \Cle{largeur} est util(isé)e).\hfill{}défaut \Cle{false}
+\end{itemize}
+\end{codecles}
+
+\begin{codetex}[tikz lower]
+%code tikz
+\pavePL
+\end{codetex}
+
+\begin{codetex}[tikz lower]
+%code tikz
+\pavePL[cube,largeur=3]
+\end{codetex}
+
+\begin{codeinfo}
+La ligne est de ce fait à insérer dans un environnement \TikZ, avec les options au choix pour cet environnement.
+
+Le code créé les nœeuds relatifs aux sommets, et les nomme comme les sommets, ce qui permet de les réutiliser pour éventuellement compléter la figure !
+\end{codeinfo}
+
+\subsection{Influence des paramètres}
+
+\begin{codetex}[listing only]
+\begin{tikzpicture}[line join=bevel]
+ \pavePL[aff,largeur=4,profondeur=3,hauteur=2,epaisseur={ultra thick}]
+\end{tikzpicture}
+\end{codetex}
+
+\medskip
+
+\begin{codesortie}
+\begin{tikzpicture}[line join=bevel]
+ \pavePL[aff,largeur=4,profondeur=3,hauteur=2,epaisseur={ultra thick}]
+\end{tikzpicture}
+\end{codesortie}
+
+\begin{codetex}[listing only]
+\begin{center}
+ \begin{tikzpicture}[line join=bevel]
+ \pavePL[plein,aff,largeur=7,profondeur=3.5,hauteur=4,sommets=Q§S§D§F§G§H§J§K]
+ \draw[thick,red,densely dotted] (G)--(J) ;
+ \draw[thick,blue,densely dotted] (K)--(H) ;
+ \end{tikzpicture}
+\end{center}
+\end{codetex}
+
+\medskip
+
+\begin{codesortie}
+\begin{center}
+ \begin{tikzpicture}[line join=bevel]
+ \pavePL[plein,aff,largeur=7,profondeur=3.5,hauteur=4,sommets=Q§S§D§F§G§H§J§K]
+ \draw[thick,red,densely dotted] (G)--(J) ;
+ \draw[thick,blue,densely dotted] (K)--(H) ;
+ \end{tikzpicture}
+\end{center}
+\end{codesortie}
+
+\newpage
+
\section{Historique}
+{\small \bverb|v1.0.9| :~~~~Ajout d'une commande \textsf{pavePL} pour créer des pavés droits (avec nœuds) en \TikZ
+
{\small \bverb|v1.0.8| :~~~~Ajout d'une commande \textsf{liencapytale} pour créer des cartouches de lien "comme capytale"
{\small \bverb|v1.0.7| :~~~~Ajout d'une option \textsf{build} pour placer certains fichiers auxiliaires dans un répertoire \textsf{./build}
diff --git a/macros/latex/contrib/proflycee/tex/ProfLycee.sty b/macros/latex/contrib/proflycee/tex/ProfLycee.sty
index c12aac3e59..71079843e3 100644
--- a/macros/latex/contrib/proflycee/tex/ProfLycee.sty
+++ b/macros/latex/contrib/proflycee/tex/ProfLycee.sty
@@ -3,7 +3,8 @@
% or later, see http://www.latex-project.org/lppl.txtf
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{ProfLycee}[2022/03/16 - v1.0.8 - Aide pour l'utilisation de LaTeX en lycée]
+\ProvidesPackage{ProfLycee}[2022/04/24 - v1.0.9 - Aide pour l'utilisation de LaTeX en lycée]
+% 1.0.9 Ajout d'une commande pavePL pour un pave droit dans un environnement TikZ
% 1.0.8 Ajout d'une commande liencapytale pour créer un cartouche "comme sur capytale"
% 1.0.7 Option [build] pour placer les fichiers temporaires dans un répertoire build (désactivée par défaut)
% 1.0.6 Option [nominted] pour éviter de charger minted & nettoyage amssymb
@@ -674,4 +675,74 @@
{enhanced,size=fbox,on line,arc=3pt,colback=vertcapyt,colframe=vertcapyt,fontupper=\IfBooleanTF{#1}{\ttfamily}{\sffamily}\bfseries,colupper=white}%
{#3#2~{\scriptsize\faLink}}
+%============PaveDroitTikZ============= OK !!
+\defKV[paramspave]{%
+ largeur=\xdef\PFPaveLg{#1},%
+ profondeur=\xdef\PFPavePf{#1},%
+ hauteur=\xdef\PFPaveHt{#1},%
+ angle=\xdef\PFPaveAngl{#1},%
+ fuite=\xdef\PFPaveFuite{#1},%
+ sommets=\def\PFPaveSommets{#1},%
+ epaisseur=\xdef\PFPaveThick{#1}
+}
+\setKVdefault[paramspave]{%
+ aff=false,%
+ plein=false,%
+ largeur=2,%
+ profondeur=1,%
+ hauteur=1.25,%
+ angle=30,%
+ fuite=0.5,%
+ epaisseur=thick,%
+ sommets=A§B§C§D§E§F§G§H,%
+ cube=false
+}
+
+\newcommand\pavePL[1][]{%
+ \useKVdefault[paramspave]%
+ \setKV[paramspave]{#1}%
+ \ifboolKV[paramspave]{cube}
+ {\xdef\PFPavePf{\PFPaveLg}%
+ \xdef\PFPaveHt{\PFPaveLg}}
+ {}
+ \setsepchar{§}%
+ \readlist\PFListeSommets\PFPaveSommets
+ \itemtomacro\PFListeSommets[1]\PaveA
+ \itemtomacro\PFListeSommets[2]\PaveB
+ \itemtomacro\PFListeSommets[3]\PaveC
+ \itemtomacro\PFListeSommets[4]\PaveD
+ \itemtomacro\PFListeSommets[5]\PaveE
+ \itemtomacro\PFListeSommets[6]\PaveF
+ \itemtomacro\PFListeSommets[7]\PaveG
+ \itemtomacro\PFListeSommets[8]\PaveH
+ %les nœuds du pave
+ \coordinate (\PaveA) at (0,0) ;
+ \coordinate (\PaveB) at ({\PFPaveLg},0) ;
+ \coordinate (\PaveC) at ($(\PaveB) + ({\PFPaveAngl}:{\PFPaveFuite*\PFPavePf})$) ;
+ \coordinate (\PaveD) at ($(\PaveA) + ({\PFPaveAngl}:{\PFPaveFuite*\PFPavePf})$) ;
+ \coordinate (\PaveE) at ($(\PaveA) + (0,{\PFPaveHt})$) ;
+ \coordinate (\PaveF) at ($(\PaveB) + (0,{\PFPaveHt})$) ;
+ \coordinate (\PaveG) at ($(\PaveC) + (0,{\PFPaveHt})$) ;
+ \coordinate (\PaveH) at ($(\PaveD) + (0,{\PFPaveHt})$) ;
+ \ifboolKV[paramspave]{aff}
+ {\draw (\PaveA) node[below left] {\PaveA} ;
+ \draw (\PaveB) node[below right] {\PaveB} ;
+ \draw (\PaveC) node[above right] {\PaveC} ;
+ \ifboolKV[paramspave]{plein}
+ {}
+ {\draw (\PaveD) node[above left] {\PaveD} ;}
+ \draw (\PaveE) node[below left] {\PaveE} ;
+ \draw (\PaveF) node[below right] {\PaveF} ;
+ \draw (\PaveG) node[above right] {\PaveG} ;
+ \draw (\PaveH) node[above left] {\PaveH} ;}
+ {}%on affiche rien
+ \draw[\PFPaveThick] (\PaveA)--(\PaveB)--(\PaveF)--(\PaveE)--cycle
+ (\PaveB)--(\PaveC)--(\PaveG)--(\PaveF)--cycle
+ (\PaveG)--(\PaveH)--(\PaveE) ;
+ \ifboolKV[paramspave]{plein}
+ {}
+ {\draw[dashed,\PFPaveThick] (\PaveA)--(\PaveD)--(\PaveC)
+ (\PaveD)--(\PaveH) ;}
+}
+
\endinput \ No newline at end of file
diff --git a/macros/latex/contrib/rec-thy/README b/macros/latex/contrib/rec-thy/README
index 1e6e845706..e7e6761ca9 100644
--- a/macros/latex/contrib/rec-thy/README
+++ b/macros/latex/contrib/rec-thy/README
@@ -40,3 +40,5 @@ Github URL: https://github.com/TruePath/Recursion-Theory-Latex-Package
v3.5 - Added \Hop command and misc code cleanup.
v3.6 - Fixed \REA[n] so that dash is shorter. Added BeamerRequirements to add a block for requirements in beamer and fixed the requirements environment for beamer. Fixed \req* command. Improved syntax for \recfnl so it can accept a () delimited argument via the same standard as \REset and \recf. Improved \setcol to allow it to be used repeatedly without typesetting bugs. Changed the code and pair commands to use only a single angle bracket.
v3.7 - Fixed cases enviornment (both prettier and no problem with creating newline). Major refactor to fix all options. Fixed bug with \set display. Added \st command inside the \set command to depreciate second argument. Added experimental commands \finSsets (alt \ssetsOfsize), \finsets and optional argument to \powset. Changed \REAop so the hat is on the starred version as intended. Added the steps (experimental) code which requires an option to enable and fixed some problems with existing options. Reimplemented \REset to use xparse to avoid some errors in unusual contexts. Fixed the display of \tpath. Depreciated \iREAop and \oneREAop.
+v3.8 - Adjusted \Tdeg to be more beamer friendly and fixed it not to dumbly underline 0^n. Fixed BeamerRequirements to work with differing values of \abovedisplayskip. Removed a few typos in docs for the requirements assistance. Added BeamerRequire and BeamerRequire* that put the requirements in a block and offer overlay specifications.
+v3.8.1 Fixed issues displaying the prime for jump operations
diff --git a/macros/latex/contrib/rec-thy/rec-thy.pdf b/macros/latex/contrib/rec-thy/rec-thy.pdf
index 601e4953ba..4e691732fe 100644
--- a/macros/latex/contrib/rec-thy/rec-thy.pdf
+++ b/macros/latex/contrib/rec-thy/rec-thy.pdf
Binary files differ
diff --git a/macros/latex/contrib/rec-thy/rec-thy.sty b/macros/latex/contrib/rec-thy/rec-thy.sty
index b2a3e7775e..36f77892a9 100644
--- a/macros/latex/contrib/rec-thy/rec-thy.sty
+++ b/macros/latex/contrib/rec-thy/rec-thy.sty
@@ -10,10 +10,10 @@
\RequirePackage{etoolbox}
\RequirePackage{pict2e,picture}
\RequirePackage{xparse}
-\def\recthyVersion{3.7}
+\def\recthyVersion{3.8.1}
\ProvidesExplPackage
{rec-thy}
- {2021/03/30}
+ {2022/04/24}
{\recthyVersion}
{Provides commands for writing up recursion theory papers}
@@ -777,17 +777,26 @@
\ifrecthy@beamersupp
- \newtheorem{reqblock}{Requirements}
- \let\OLDreqblock=\reqblock
- \def\reqblock{%
+ \theoremstyle{plain}
+ \newtheorem{reqsblock@recthy}{Requirements}
+ \newtheorem{reqblock@recthy}{Requirement}
+ \let\OLDreqsblock@recthy=\reqsblock@recthy
+ \let\OLDreqblock@recthy=\reqblock@recthy
+ \def\reqsblock@recthy{%
\setbeamercolor{block title}{fg=white,bg=Maroon}%
- \setbeamercolor{block body}{fg=black,bg=Maroon!10}\OLDreqblock
+ \setbeamercolor{block body}{fg=black,bg=Maroon!10}\OLDreqsblock@recthy
+ }
+ \def\reqblock@recthy{%
+ \setbeamercolor{block title}{fg=white,bg=Maroon}%
+ \setbeamercolor{block body}{fg=black,bg=Maroon!10}\OLDreqblock@recthy
}
\NewDocumentCommand{\require@beamer}{sO{}mO{}m}{\tag{$\@ifmtarg{#2#4}{\mathscr{#3}_{#5}}{\mathscr{#3}_{#5}^{#2#4}}$} \IfBooleanTF{#1}{}{\label{\detokenize{req:#3@#2#4}}} & }
- \NewDocumentEnvironment{BeamerRequirements}{d<>b}{\IfValueTF{#1}{\begin{reqblock}<#1>}{\begin{reqblock}}%
- \vspace*{-.5cm}
+ \NewDocumentEnvironment{BeamerRequirements}{d<>b}{\IfValueTF{#1}{\begin{reqsblock@recthy}<#1>}{\begin{reqsblock@recthy}}%
+ \setlength{\abovedisplayskip}{0pt}%
+ \setlength{\belowdisplayskip}{0pt}%
+ % \vspace*{-.5cm}
\usetagform{colon} %
\let\myhalign\halign%
\def\halign{\let\mylb\\ \renewcommand{\\}{& \mylb}\myhalign}%
@@ -795,7 +804,7 @@
\begin{flalign*}%
#2 &
\end{flalign*}%
- \end{reqblock}}{}
+ \end{reqsblock@recthy}}{}
\NewDocumentEnvironment{requirements}{b}{\usetagform{colon} %
\let\myhalign\halign%
@@ -804,7 +813,27 @@
\begin{flalign*}%
#1 &
\end{flalign*}}{\ignorespacesafterend}%\@recthy@ignorespacesandallparsafter}
- \else
+
+
+ \NewDocumentEnvironment{BeamerRequire}{d<>O{}mO{}m}{\IfValueTF{#1}{\begin{reqblock@recthy}<#1>}{\begin{reqblock@recthy}}%
+ \setlength{\abovedisplayskip}{0pt}%
+ \setlength{\belowdisplayskip}{0pt}%
+ \begin{requirement}{\req@nohref[#2#4]{#3}{#5}} \label{\detokenize{req:#3@#2#4}}%
+ }{
+ \end{requirement}%
+ \vspace*{-.3cm}%
+ \end{reqblock@recthy}%
+ }
+ \NewDocumentEnvironment{BeamerRequire*}{d<>O{}mO{}m}{\IfValueTF{#1}{\begin{reqblock@recthy}<#1>}{\begin{reqblock@recthy}}%
+ \setlength{\abovedisplayskip}{0pt}%
+ \setlength{\belowdisplayskip}{0pt}%
+ \begin{requirement}{\req@nohref[#2#4]{#3}{#5}}
+ }{
+ \end{requirement}%
+ \vspace*{-.3cm}%
+ \end{reqblock@recthy}%
+ }
+\else
\NewDocumentEnvironment{requirements}{}{%
\@pmg@saveeqstate%
@@ -1824,6 +1853,8 @@
\@packinfo{No degree classes loading.}
\else
\@packinfo{Degree classes loading.}
+ \newcommand*{\Tdegrees}{\ensuremath{\mathscr{D}}}
+ \newcommand*{\REdegrees}{\ensuremath{\mathscr{R}}}
\newcommand{\Low}[1][]{\ensuremath{ \text{Low}^{#1} }}
\newcommand{\LowN}[2][]{\ensuremath{ \text{Low}^{#1}_{#2} }}
\newcommand{\lowN}[2][]{\ensuremath{ \mathcal{L}^{#1}_{#2} }}
@@ -1951,17 +1982,17 @@
\newcommand*{\entersat}[1]{\mathbin{\searrow_{#1}}}
- \appto{\recthy@rollback@threeSeven}{
- \NewDocumentCommand{\oneREAop}{st+d()od()m}{{\IfBooleanTF{#1}{\mathcal{J}}{\widehat{\mathcal{J}}}}^{\IfBooleanTF{#1}{\vphantom{x}^\dagger}{}}_{#6\IfValueTF{#4}{, #4}{}} \IfValueTF{#3}{\left(#3\right)}{\IfValueTF{#5}{\left(#5\right)}{}}}
- \let\iREAop=\oneREAop
- }
+ % \appto{\recthy@rollback@threeSeven}{
+ % \NewDocumentCommand{\oneREAop}{st+d()od()m}{{\IfBooleanTF{#1}{\mathcal{J}}{\widehat{\mathcal{J}}}}^{\IfBooleanTF{#1}{\vphantom{x}^\dagger}{}}_{#6\IfValueTF{#4}{, #4}{}} \IfValueTF{#3}{\left(#3\right)}{\IfValueTF{#5}{\left(#5\right)}{}}}
+ % \let\iREAop=\oneREAop
+ % }
- % \newcommand*{\alphaREAop}[2][]{\mathcal{J}^{#2}_{#1}}
- \appto{\recthy@rollback@threeTwo}{
- \let\reaop=\REAop
- \let\alphaREAop=\REAop
- \let\aREAop=\alphaREAop
- }
+ % % \newcommand*{\alphaREAop}[2][]{\mathcal{J}^{#2}_{#1}}
+ % \appto{\recthy@rollback@threeTwo}{
+ % \let\reaop=\REAop
+ % \let\alphaREAop=\REAop
+ % \let\aREAop=\alphaREAop
+ % }
@@ -1986,28 +2017,32 @@
\providecommand*{\Tdegvar}[1]{\symbf{#1}}
\providecommand*{\Tdegof}[1]{\utilde{#1}}
- \providecommand*{\Tdeg}[1]{\ifthenelse{
+ \protected\def\Tdeg#1{\ifthenelse{
% \equal{\detokenize{\Tzero}}{\futurelet\next@pmg\discard#1\@nil\expandafter\detokenize{\next@pmg}}
\equal{\detokenize{\Tzero}}{\detokenize{#1}} \OR
- \equal{\detokenize{\Tzero}}{\detokenize{#1}} \OR
+ \equal{\detokenize{\Tzeroj}}{\detokenize{#1}} \OR
+ \equal{\detokenize{\Tzerojj}}{\detokenize{#1}} \OR
+ \equal{\detokenize{\Tzerojjj}}{\detokenize{#1}} \OR
\equal{\detokenize{\zeroj}}{\detokenize{#1}} \OR
\equal{\detokenize{\zerojj}}{\detokenize{#1}} \OR
\equal{\detokenize{\zerojjj}}{\detokenize{#1}} \OR
\equal{\string \zeron }{\expandafter\string \first@pmg@rdmxs(#1)}
- }{\Tdegof{#1}}{\Tdegvar{#1}}}
+ }{#1}{\Tdegvar{#1}}}
+
- \providecommand*{\Tjump}[1]{#1'}
+ \providecommand*{\Tjump}[1]{{#1}'}
\let\jump=\Tjump
- \providecommand*{\jumpn}[2]{#1^{(#2)}}
- \providecommand*{\jjump}[1]{#1''}
+ \providecommand*{\jumpn}[2]{{#1}^{(#2)}}
+ \providecommand*{\jjump}[1]{{#1}''}
+ \providecommand*{\jjjump}[1]{{#1}'''}
% \newcommand*{\Tzerosym}{\MVZero}
- \newcommand*{\Tzerosym}{\mathbb{0}}
+ \newcommand*{\Tzerosym}{\symbf{0}}
\providecommand*{\Tzero}{{\Tzerosym}}
\providecommand*{\zeron}[1]{{\Tzerosym}^{(#1)}}
\providecommand*{\zeroj}{\jump{{\Tzerosym}}}
\let\Tzeroj=\zeroj
- \providecommand*{\zerojj}{\jump{\jump{{\Tzerosym}}}}
- \providecommand*{\zerojjj}{\jump{\jump{\jump{{\Tzerosym}}}}}
+ \providecommand*{\zerojj}{\jjump{\Tzerosym}}
+ \providecommand*{\zerojjj}{\jjjump{\Tzerosym}}
\let\Tzerojj=\zerojj
\let\Tzerojjj=\zerojjj
diff --git a/macros/latex/contrib/rec-thy/rec-thy.tex b/macros/latex/contrib/rec-thy/rec-thy.tex
index ded730f3b0..b80b17f6b5 100644
--- a/macros/latex/contrib/rec-thy/rec-thy.tex
+++ b/macros/latex/contrib/rec-thy/rec-thy.tex
@@ -282,9 +282,9 @@ Math mode is not required for \verb=\req{R}{e}=
\begin{tabular}{l | l | l}\toprule
\verb=\req{R}{e}= & \( \req{R}{e} \) & \multirow{3}{*}{Requirement } \\ \midrule
-\verb=\req{R}[\nu]{e\}= & \req{R}[\nu]{e} & \\ \midrule
-\verb=\req*{R}{e\}= & \req{R}{e} & \multirow{3}{*}{Requirement without hyperlinks} \\ \midrule
-\verb=\req*{R}[\nu]{e\}= & \req{R}[\nu]{e} & \\ \midrule
+\verb=\req{R}[\nu]{e}= & \req{R}[\nu]{e} & \\ \midrule
+\verb=\req*{R}{e}= & \req{R}{e} & \multirow{3}{*}{Requirement without hyperlinks} \\ \midrule
+\verb=\req*{R}[\nu]{e}= & \req{R}[\nu]{e} & \\ \midrule
\bottomrule
\end{tabular} \\
@@ -302,7 +302,7 @@ Giving output
\recfnl{r}{B}{} = \REset{j} \implies \exists[k] \left( \Upsilon^{j}_k(C \Tplus \REset{j}) = B) \lor \REset{j} \Tleq \Tzero \right)
\end{requirement}
-The require environment merges the \verb=\req[\nu]{R}{e\}= command directly into the environment arguments. It also creates an automatic label which makes use of the 1st and 2nd arguments but assumes the third argument contains only indexes whose names are subject to change. Unless \verb=nohyperreqs= is passed the \verb=\req[\nu]{R}{e\}= automatically links to the defining require environment.
+The require environment merges the \verb=\req[\nu]{R}{e}= command directly into the environment arguments. It also creates an automatic label which makes use of the 1st and 2nd arguments but assumes the third argument contains only indexes whose names are subject to change. Unless \verb=nohyperreqs= is passed the \verb=\req[\nu]{R}{e}= automatically links to the defining require environment.
\begin{lstlisting}[breaklines]
\begin{require}{R}{i}
diff --git a/macros/latex/contrib/uspace/uspace-ctanify.sh b/macros/latex/contrib/uspace/uspace-ctanify.sh
index 8dec20e2d5..9824eb0aeb 100755
--- a/macros/latex/contrib/uspace/uspace-ctanify.sh
+++ b/macros/latex/contrib/uspace/uspace-ctanify.sh
@@ -30,6 +30,7 @@ DOCDIR=doc/latex/uspace
LATEXDIR=tex/latex/uspace
TEMP_DIR=`mktemp -d -p "$PWD"`
+mkdir "$TEMP_DIR"/uspace
read -d '' CTANIFY_MAP <<EOF || true
uspace.sty=$LATEXDIR
README.md=$DOCDIR
@@ -48,17 +49,18 @@ echo "map:" $CTANIFY_MAP
for entry in $CTANIFY_MAP ; do
file=${entry%=*}
#target_dir=${entry#*=}
- cp -v "$file" "$TEMP_DIR"
+ cp -v "$file" "$TEMP_DIR/uspace"
done
ROOT_DIR="$PWD"
(
- cd "$TEMP_DIR"
+ cd "$TEMP_DIR"/uspace
setfacl -b *
chmod +rw-x *
chmod +x uspace-ctanify.sh
#ctanify --pkgname=uspace $CTANIFY_MAP
#mv -vf uspace.tar.gz "$ROOT_DIR"
+ cd ..
tar cvvzf "$ROOT_DIR/uspace.tar.gz" .
)
diff --git a/macros/latex/contrib/uspace/uspace-test-lualatex.pdf b/macros/latex/contrib/uspace/uspace-test-lualatex.pdf
index 3edef468b9..5bf2a594d2 100644
--- a/macros/latex/contrib/uspace/uspace-test-lualatex.pdf
+++ b/macros/latex/contrib/uspace/uspace-test-lualatex.pdf
Binary files differ
diff --git a/macros/latex/contrib/uspace/uspace-test-pdflatex.pdf b/macros/latex/contrib/uspace/uspace-test-pdflatex.pdf
index 9be669cbb4..ea6f80753b 100644
--- a/macros/latex/contrib/uspace/uspace-test-pdflatex.pdf
+++ b/macros/latex/contrib/uspace/uspace-test-pdflatex.pdf
Binary files differ
diff --git a/macros/latex/contrib/uspace/uspace-test-xelatex.pdf b/macros/latex/contrib/uspace/uspace-test-xelatex.pdf
index f3bdc0cc1b..efd71545be 100644
--- a/macros/latex/contrib/uspace/uspace-test-xelatex.pdf
+++ b/macros/latex/contrib/uspace/uspace-test-xelatex.pdf
Binary files differ
diff --git a/macros/latex/contrib/uspace/uspace.pdf b/macros/latex/contrib/uspace/uspace.pdf
index f2306c6ca0..5e066f624b 100644
--- a/macros/latex/contrib/uspace/uspace.pdf
+++ b/macros/latex/contrib/uspace/uspace.pdf
Binary files differ
diff --git a/macros/latex/contrib/uspace/uspace.sty b/macros/latex/contrib/uspace/uspace.sty
index 29672d2df4..88ae29d1d8 100644
--- a/macros/latex/contrib/uspace/uspace.sty
+++ b/macros/latex/contrib/uspace/uspace.sty
@@ -1,7 +1,7 @@
% LaTeX package that defines meanings to several different Unicode space
% characters.
%
-% © 2016 Václav Haisman
+% © 2022 Václav Haisman
%
%% This program can be redistributed and/or modified under the terms of the
%% MIT license. See LICENSE file.
@@ -10,7 +10,7 @@
\NeedsTeXFormat{LaTeX2e}[1994/06/01]
\ProvidesPackage{uspace}
-[2016/11/06 v0.04 LaTeX package that defines meanings to several different
+[2022/04/24 v0.05 LaTeX package that defines meanings to several different
Unicode space characters.]
\RequirePackage{ifxetex,ifluatex}
@@ -69,6 +69,9 @@ Unicode space characters.]
% hair space
\newunicodechar{ }{\hspace{0.08333em}}
+% Medium Mathematical Space (MMSP)
+\newunicodechar{ }{\hspace{0.22222em}}
+
% line separator
\newunicodechar{
}{\newline}
diff --git a/macros/latex/contrib/uspace/uspace.tex b/macros/latex/contrib/uspace/uspace.tex
index b46a4f7b01..add8dfbf46 100644
--- a/macros/latex/contrib/uspace/uspace.tex
+++ b/macros/latex/contrib/uspace/uspace.tex
@@ -1,3 +1,4 @@
+\PassOptionsToPackage{unicode}{hyperref}
\documentclass[paper=B5,DIV=calc,parskip=half]{scrartcl}
\usepackage{ifluatex}
\ifluatex
@@ -5,8 +6,7 @@
\fi
\usepackage{fontspec}
-%\defaultfontfeatures{Ligatures={TeX,Common},Scale=MatchLowercase}
-\setmainfont[]{Charis SIL}
+\setmainfont[Ligatures={TeX,Common}]{Charis SIL}
\setsansfont[Ligatures={TeX,Common}, Scale=MatchLowercase]{TeX Gyre Heros}
\setmonofont[Ligatures=,Scale=MatchLowercase]{DejaVu Sans Mono}
@@ -23,7 +23,7 @@
\\{\small\href{mailto:vhaisman+uspace@gmail.com?subject=[uspace]}{vhaisman@gmail.com}}}{}}
\date{\today}
\title{\texttt{uspace} user manual}
-\subtitle{v0.04}
+\subtitle{v0.05}
\usepackage{xcolor}
\usepackage{multicol}
@@ -31,7 +31,6 @@
\usepackage{metalogo}
\usepackage{hologo}
-\PassOptionsToPackage{unicode}{hyperref}
\usepackage{bookmark}
\hypersetup{
colorlinks,
@@ -40,6 +39,8 @@
urlcolor={blue!80!black},
breaklinks=true}
\urlstyle{same} % don't use monospace font for urls
+\usepackage{footnotehyper}
+\makesavenoteenv{labeling}
\setlength{\emergencystretch}{3em} % prevent overfull lines
@@ -65,6 +66,7 @@
\newcommand{\punctsp}{\textsc{punctuation space}}
\newcommand{\thinsp}{\textsc{thin space}}
\newcommand{\hairsp}{\textsc{hair space}}
+\newcommand{\medmathsp}{\textsc{medium math space}}
\newcommand{\linesep}{\textsc{line separator}}
\newcommand{\nel}{\textsc{next line (nel)}}
\newcommand{\parasep}{\textsc{paragraph separator}}
@@ -93,9 +95,9 @@ and their implementations:\nobreak%
\item[\nbsp{\footnotemark[1]} (\texttt{U+00A0})] \lstinline|~|
\item[\shy{\footnotemark[1]} (\texttt{U+00AD})] \lstinline|\-|
\item[\emquad{\footnotemark[2]} (\texttt{U+2001})] \lstinline|\quad|
-\item[\emspaceC{\footnotemark[2]} (\texttt{U+2001})] \lstinline|\quad|
+\item[\emspaceC{\footnotemark[2]} (\texttt{U+2003})] \lstinline|\quad|
\item[\enquad{\footnotemark[3]} (\texttt{U+2000})] \lstinline|\enskip|
-\item[\enspaceC{\footnotemark[3]} (\texttt{U+2000})] \lstinline|\enskip|
+\item[\enspaceC{\footnotemark[3]} (\texttt{U+2002})] \lstinline|\enskip|
\item[\threePerEm{} (\texttt{U+2004})] \lstinline|\hspace{0.33333em}|
\item[\fourPerEm{} (\texttt{U+2005})] \lstinline|\hspace{0.25em}|
\item[\sixPerEm{} (\texttt{U+2006})] \lstinline|\hspace{0.16667em}|
@@ -103,6 +105,7 @@ and their implementations:\nobreak%
\item[\punctsp{} (\texttt{U+2008})] \lstinline|\hspace{\fontcharwd \font `\,}|
\item[\thinsp{} (\texttt{U+2009})] \lstinline|\leavevmode\allowbreak\,|
\item[\hairsp{} (\texttt{U+200A})] \lstinline|\hspace{0.08333em}|
+\item[\medmathsp{} (\texttt{U+205F})] \lstinline|\hspace{0.22222em}|
\item[\linesep{} (\texttt{U+2028})] \lstinline|\newline|
\item[\nel{} (\texttt{U+0085})] \lstinline|\newline|
\item[\parasep{} (\texttt{U+2029})] \lstinline|\csname par\endcsname|
@@ -127,6 +130,7 @@ This package would not be what it is without help and comments from people of
\begin{description}[style=nextline, labelwidth=4.5em, leftmargin=!,
labelindent=0em]
+ \item[\texttt{v0.05}] Add implementation for \medmathsp{}.
\item[\texttt{v0.04}] Add implementation for \linesep{}, \nel{}
and \parasep{}.
\item[\texttt{v0.03}] Change implementation for \punctsp{} and \thinsp{} to
diff --git a/macros/latex/contrib/zref-vario/CHANGELOG.md b/macros/latex/contrib/zref-vario/CHANGELOG.md
index 512c7e6c4e..c539ec3cb1 100644
--- a/macros/latex/contrib/zref-vario/CHANGELOG.md
+++ b/macros/latex/contrib/zref-vario/CHANGELOG.md
@@ -1,6 +1,11 @@
# Changelog
-## [Unreleased](https://github.com/gusbrs/zref-vario/compare/v0.1.3-alpha...HEAD)
+## [Unreleased](https://github.com/gusbrs/zref-vario/compare/v0.1.4...HEAD)
+
+## [v0.1.4](https://github.com/gusbrs/zref-vario/compare/v0.1.3-alpha...v0.1.4) (2022-04-24)
+
+### Changed
+- Improved loading of dependencies.
## [v0.1.3-alpha](https://github.com/gusbrs/zref-vario/compare/v0.1.2-alpha...v0.1.3-alpha) (2022-02-11)
diff --git a/macros/latex/contrib/zref-vario/MANIFEST.md b/macros/latex/contrib/zref-vario/MANIFEST.md
deleted file mode 100644
index f615ce334e..0000000000
--- a/macros/latex/contrib/zref-vario/MANIFEST.md
+++ /dev/null
@@ -1,150 +0,0 @@
-# Manifest for zref-vario
-
-This file is a listing of all files considered to be part of this package.
-It is automatically generated with `l3build manifest`.
-
-
-## Repository manifest
-
-The following groups list the files included in the development repository of the package.
-Files listed with a ‘†’ marker are included in the TDS but not CTAN files, and files listed
-with ‘‡’ are included in both.
-
-### Source files
-
-These are source files for a number of purposes, including the `unpack` process which
-generates the installation files of the package. Additional files included here will also
-be installed for processing such as testing.
-
-* zref-vario.dtx ‡
-* zref-vario.ins ‡
-
-### Typeset documentation source files
-
-These files are typeset using LaTeX to produce the PDF documentation for the package.
-
-* zref-vario-code.tex ‡
-* zref-vario.tex ‡
-
-### Text files
-
-Plain text files included as documentation or metadata.
-
-* CHANGELOG.md ‡
-* MANIFEST.md ‡
-* README.md ‡
-* readme-ctan.md
-* DEPENDS.txt ‡
-
-### Derived files
-
-The files created by ‘unpacking’ the package sources. This typically includes
-`.sty` and `.cls` files created from DocStrip `.dtx` files.
-
-* zref-vario.sty †
-
-### Typeset documents
-
-The output files (PDF, essentially) from typesetting the various source, demo,
-etc., package files.
-
-* zref-vario-code.pdf ‡
-* zref-vario.pdf ‡
-
-### Test files
-
-These files form the test suite for the package. `.lvt` or `.lte` files are the individual
-unit tests, and `.tlg` are the stored output for ensuring changes to the package produce
-the same output. These output files are sometimes shared and sometime specific for
-different engines (pdfTeX, XeTeX, LuaTeX, etc.).
-
-* zv-basic01.lvt
-* zv-basic02.lvt
-* zv-basic03.lvt
-* zv-basic04.lvt
-* zv-hyperref01.lvt
-* zv-languages01.lvt
-* zv-vcheck01.lvt
-* zv-zcref-options01.lvt
-* zv-basic01.luatex.tlg
-* zv-basic01.luatexdev.tlg
-* zv-basic01.tlg
-* zv-basic01.xetex.tlg
-* zv-basic01.xetexdev.tlg
-* zv-basic02.luatex.tlg
-* zv-basic02.luatexdev.tlg
-* zv-basic02.tlg
-* zv-basic02.xetex.tlg
-* zv-basic02.xetexdev.tlg
-* zv-basic03.luatex.tlg
-* zv-basic03.luatexdev.tlg
-* zv-basic03.tlg
-* zv-basic03.xetex.tlg
-* zv-basic03.xetexdev.tlg
-* zv-basic04.luatex.tlg
-* zv-basic04.luatexdev.tlg
-* zv-basic04.tlg
-* zv-basic04.xetex.tlg
-* zv-basic04.xetexdev.tlg
-* zv-hyperref01.luatex.tlg
-* zv-hyperref01.luatexdev.tlg
-* zv-hyperref01.tlg
-* zv-hyperref01.xetex.tlg
-* zv-hyperref01.xetexdev.tlg
-* zv-languages01.tlg
-* zv-vcheck01.tlg
-* zv-zcref-options01.luatex.tlg
-* zv-zcref-options01.luatexdev.tlg
-* zv-zcref-options01.tlg
-* zv-zcref-options01.xetex.tlg
-* zv-zcref-options01.xetexdev.tlg
-
-
-## TDS manifest
-
-The following groups list the files included in the TeX Directory Structure used to install
-the package into a TeX distribution.
-
-### Source files (TDS)
-
-All files included in the `zref-vario/source` directory.
-
-* zref-vario.dtx
-* zref-vario.ins
-
-### TeX files (TDS)
-
-All files included in the `zref-vario/tex` directory.
-
-* zref-vario.sty
-
-### Doc files (TDS)
-
-All files included in the `zref-vario/doc` directory.
-
-* CHANGELOG.md
-* DEPENDS.txt
-* MANIFEST.md
-* README.md
-* zref-vario-code.pdf
-* zref-vario-code.tex
-* zref-vario.pdf
-* zref-vario.tex
-
-
-## CTAN manifest
-
-The following group lists the files included in the CTAN package.
-
-### CTAN files
-
-* CHANGELOG.md
-* DEPENDS.txt
-* MANIFEST.md
-* README.md
-* zref-vario-code.pdf
-* zref-vario-code.tex
-* zref-vario.dtx
-* zref-vario.ins
-* zref-vario.pdf
-* zref-vario.tex
diff --git a/macros/latex/contrib/zref-vario/zref-vario-code.pdf b/macros/latex/contrib/zref-vario/zref-vario-code.pdf
index fe8c46ac95..15511b8705 100644
--- a/macros/latex/contrib/zref-vario/zref-vario-code.pdf
+++ b/macros/latex/contrib/zref-vario/zref-vario-code.pdf
Binary files differ
diff --git a/macros/latex/contrib/zref-vario/zref-vario-code.tex b/macros/latex/contrib/zref-vario/zref-vario-code.tex
index 949376f197..18c6115093 100644
--- a/macros/latex/contrib/zref-vario/zref-vario-code.tex
+++ b/macros/latex/contrib/zref-vario/zref-vario-code.tex
@@ -24,7 +24,7 @@
% zref-vario.ins,
% zref-vario.tex,
% zref-vario-code.tex,
-% and the files listed in MANIFEST.md.
+% and the files generated from them.
%
% The released version of this package is available from CTAN.
%
diff --git a/macros/latex/contrib/zref-vario/zref-vario.dtx b/macros/latex/contrib/zref-vario/zref-vario.dtx
index 2c0aa78192..c9db0a0f8a 100644
--- a/macros/latex/contrib/zref-vario/zref-vario.dtx
+++ b/macros/latex/contrib/zref-vario/zref-vario.dtx
@@ -24,7 +24,7 @@
% zref-vario.ins,
% zref-vario.tex,
% zref-vario-code.tex,
-% and the files listed in MANIFEST.md.
+% and the files generated from them.
%
% The released version of this package is available from CTAN.
%
@@ -128,19 +128,21 @@
%
% Identify the package.
% \begin{macrocode}
-\ProvidesExplPackage {zref-vario} {2022-02-11} {0.1.3-alpha}
+\ProvidesExplPackage {zref-vario} {2022-04-24} {0.1.4}
{Extended LaTeX page cross-references with varioref and zref-clever}
% \end{macrocode}
%
%
-% Required packages.
+% Required packages. The loading of \pkg{varioref} is delayed until
+% \texttt{begindocument/before} since it has potential load order issues
+% (e.g.\ with \pkg{hyperref}) so, ideally, it should be explicitly loaded by
+% the user (and the manual recommends it). But we do it, if it hasn't been
+% done.
%
% \begin{macrocode}
+\RequirePackage { zref-clever } [ 2022-01-28 ] % v0.2.0-alpha
\AddToHook { begindocument/before }
- {
- \RequirePackage { varioref }
- \RequirePackage { zref-clever } [ 2022-01-28 ] % v0.2.0-alpha
- }
+ { \RequirePackage { varioref } }
% \end{macrocode}
%
%
@@ -613,7 +615,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_vref_pagenum:Nn #1#2
{
- \exp_args:NNNo \exp_args:NNo \def #1
+ \exp_args:NNNo \exp_args:NNo \cs_set_nopar:Npn #1
{ \zref@extractdefault {#2} { page } { ?? } }
}
\cs_new_protected:Npn \@@_vrefpagenum:Nn #1#2
diff --git a/macros/latex/contrib/zref-vario/zref-vario.ins b/macros/latex/contrib/zref-vario/zref-vario.ins
index c04eb45c3e..f0e767208b 100644
--- a/macros/latex/contrib/zref-vario/zref-vario.ins
+++ b/macros/latex/contrib/zref-vario/zref-vario.ins
@@ -24,7 +24,7 @@
% zref-vario.ins,
% zref-vario.tex,
% zref-vario-code.tex,
-% and the files listed in MANIFEST.md.
+% and the files generated from them.
%
% The released version of this package is available from CTAN.
%
@@ -70,7 +70,7 @@ This work consists of the files zref-vario.dtx,
zref-vario.ins,
zref-vario.tex,
zref-vario-code.tex,
- and the files listed in MANIFEST.md.
+ and the files generated from them.
The released version of this package is available from CTAN.
diff --git a/macros/latex/contrib/zref-vario/zref-vario.pdf b/macros/latex/contrib/zref-vario/zref-vario.pdf
index c0f262ac85..6e72662072 100644
--- a/macros/latex/contrib/zref-vario/zref-vario.pdf
+++ b/macros/latex/contrib/zref-vario/zref-vario.pdf
Binary files differ
diff --git a/macros/latex/contrib/zref-vario/zref-vario.tex b/macros/latex/contrib/zref-vario/zref-vario.tex
index a4ef370837..08da926111 100644
--- a/macros/latex/contrib/zref-vario/zref-vario.tex
+++ b/macros/latex/contrib/zref-vario/zref-vario.tex
@@ -24,7 +24,7 @@
% zref-vario.ins,
% zref-vario.tex,
% zref-vario-code.tex,
-% and the files listed in MANIFEST.md.
+% and the files generated from them.
%
% The released version of this package is available from CTAN.
%
@@ -135,18 +135,13 @@ As usual:
\usepackage{zref-vario}
\end{zvexample}
-\pkg{zref-vario} will load \pkg{varioref} and \pkg{zref-clever} at
-\texttt{begindocument/before}, if they have not already been loaded. However,
+\pkg{zref-vario} loads \pkg{zref-clever}, and will load \pkg{varioref} at
+\texttt{begindocument/before}, if it hasn't already been loaded. However,
considering \pkg{varioref} has known load order interaction with other
packages, prominently with \pkg{hyperref}, you may wish to load it explicitly
to ensure its load order requirements are met.
-\section{Dependencies}
-
-\pkg{zref-vario} requires \pkg{varioref} and \pkg{zref-clever}.
-
-
\section{User interface}
\begin{function}{\zvref}
@@ -296,8 +291,10 @@ reliable use.
A change log with relevant changes for each version, eventual upgrade
instructions, and upcoming changes, is maintained in the package's repository,
-at \url{https://github.com/gusbrs/zref-vario/blob/main/CHANGELOG.md}. An
-archive of historical versions of the package is also kept at
-\url{https://github.com/gusbrs/zref-vario/releases}.
+at \url{https://github.com/gusbrs/zref-vario/blob/main/CHANGELOG.md}. The
+change log is also distributed with the package's documentation through CTAN
+upon release so, most likely, \texttt{texdoc zref-vario/changelog} should
+provide easy local access to it. An archive of historical versions of the
+package is also kept at \url{https://github.com/gusbrs/zref-vario/releases}.
\end{document}