summaryrefslogtreecommitdiff
path: root/Master
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2013-05-28 00:18:19 +0000
committerKarl Berry <karl@freefriends.org>2013-05-28 00:18:19 +0000
commitd27eef38ae3949f50534d0d84c3e1e27a08d4a28 (patch)
tree4c257881eaf09dbca5b8824c4061e923509fdf8c /Master
parent1c6157c57b3a33d9b44027ccc44ef1e02f98d51c (diff)
conteq (24may13)
git-svn-id: svn://tug.org/texlive/trunk@30746 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
-rw-r--r--Master/texmf-dist/doc/latex/conteq/README28
-rw-r--r--Master/texmf-dist/doc/latex/conteq/README.txt28
-rw-r--r--Master/texmf-dist/doc/latex/conteq/conteq.hd0
-rw-r--r--Master/texmf-dist/doc/latex/conteq/conteq.pdfbin0 -> 304493 bytes
-rw-r--r--Master/texmf-dist/source/latex/conteq/conteq.dtx511
-rw-r--r--Master/texmf-dist/source/latex/conteq/conteq.ins82
-rw-r--r--Master/texmf-dist/tex/latex/conteq/conteq.sty233
-rwxr-xr-xMaster/tlpkg/bin/tlpkg-ctan-check2
-rw-r--r--Master/tlpkg/tlpsrc/collection-mathextra.tlpsrc1
-rw-r--r--Master/tlpkg/tlpsrc/conteq.tlpsrc0
10 files changed, 884 insertions, 1 deletions
diff --git a/Master/texmf-dist/doc/latex/conteq/README b/Master/texmf-dist/doc/latex/conteq/README
new file mode 100644
index 00000000000..2fc87fe3fbd
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/conteq/README
@@ -0,0 +1,28 @@
+----------------------------------------------------------------
+conteq --- continued equalities
+E-mail: mail@joachim-breitner.de
+Released under the LaTeX Project Public License v1.3c or later
+See http://www.latex-project.org/lppl.txt
+----------------------------------------------------------------
+
+This package allows you to write an continued equality such as
+
+ \begin{conteq}
+ e^{\pi\cdot i} \\
+ = -1 & Euler's formula \\
+ < 0 & this is an inequality \\
+ < \sqrt 3 \\
+ = \int e^{-x^2} dx & this is due to Gauss.
+ \end{conteq}
+
+in a declarative manner and easily switch between various layouts afterwards.
+
+
+
+
+
+
+
+
+
+
diff --git a/Master/texmf-dist/doc/latex/conteq/README.txt b/Master/texmf-dist/doc/latex/conteq/README.txt
new file mode 100644
index 00000000000..2fc87fe3fbd
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/conteq/README.txt
@@ -0,0 +1,28 @@
+----------------------------------------------------------------
+conteq --- continued equalities
+E-mail: mail@joachim-breitner.de
+Released under the LaTeX Project Public License v1.3c or later
+See http://www.latex-project.org/lppl.txt
+----------------------------------------------------------------
+
+This package allows you to write an continued equality such as
+
+ \begin{conteq}
+ e^{\pi\cdot i} \\
+ = -1 & Euler's formula \\
+ < 0 & this is an inequality \\
+ < \sqrt 3 \\
+ = \int e^{-x^2} dx & this is due to Gauss.
+ \end{conteq}
+
+in a declarative manner and easily switch between various layouts afterwards.
+
+
+
+
+
+
+
+
+
+
diff --git a/Master/texmf-dist/doc/latex/conteq/conteq.hd b/Master/texmf-dist/doc/latex/conteq/conteq.hd
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/conteq/conteq.hd
diff --git a/Master/texmf-dist/doc/latex/conteq/conteq.pdf b/Master/texmf-dist/doc/latex/conteq/conteq.pdf
new file mode 100644
index 00000000000..a9541929615
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/conteq/conteq.pdf
Binary files differ
diff --git a/Master/texmf-dist/source/latex/conteq/conteq.dtx b/Master/texmf-dist/source/latex/conteq/conteq.dtx
new file mode 100644
index 00000000000..b36696ae23b
--- /dev/null
+++ b/Master/texmf-dist/source/latex/conteq/conteq.dtx
@@ -0,0 +1,511 @@
+% \iffalse meta-comment
+% !TEX program = pdfLaTeX
+%<*internal>
+\iffalse
+%</internal>
+%<*readme>
+----------------------------------------------------------------
+conteq --- continued equalities
+E-mail: mail@joachim-breitner.de
+Released under the LaTeX Project Public License v1.3c or later
+See http://www.latex-project.org/lppl.txt
+----------------------------------------------------------------
+
+This package allows you to write an continued equality such as
+
+ \begin{conteq}
+ e^{\pi\cdot i} \\
+ = -1 & Euler's formula \\
+ < 0 & this is an inequality \\
+ < \sqrt 3 \\
+ = \int e^{-x^2} dx & this is due to Gauss.
+ \end{conteq}
+
+in a declarative manner and easily switch between various layouts afterwards.
+%</readme>
+%<*internal>
+\fi
+\def\nameofplainTeX{plain}
+\ifx\fmtname\nameofplainTeX\else
+ \expandafter\begingroup
+\fi
+%</internal>
+%<*install>
+\input docstrip.tex
+\keepsilent
+\askforoverwritefalse
+\preamble
+----------------------------------------------------------------
+conteq --- continued equalities
+E-mail: mail@joachim-breitner.de
+Released under the LaTeX Project Public License v1.3c or later
+See http://www.latex-project.org/lppl.txt
+----------------------------------------------------------------
+
+\endpreamble
+\postamble
+
+Copyright (C) 2013 by Joachim Breitner <mail@joachim-breitner.de>
+
+This work may be distributed and/or modified under the
+conditions of the LaTeX Project Public License (LPPL), either
+version 1.3c of this license or (at your option) any later
+version. The latest version of this license is in the file:
+
+http://www.latex-project.org/lppl.txt
+
+This work is "maintained" (as per LPPL maintenance status) by
+Joachim Breitner.
+
+This work consists of the file conteq.dtx
+and the derived files conteq.ins,
+ conteq.pdf and
+ conteq.sty.
+
+\endpostamble
+\usedir{tex/latex/conteq}
+\generate{
+ \file{\jobname.sty}{\from{\jobname.dtx}{package}
+ \from{\jobname.dtx}{layouts}}
+}
+%</install>
+%<install>\endbatchfile
+%<*internal>
+\generate{
+ \file{\jobname.ins}{\from{\jobname.dtx}{install}}
+}
+\nopreamble\nopostamble
+\generate{
+ \file{README.txt}{\from{\jobname.dtx}{readme}}
+}
+\ifx\fmtname\nameofplainTeX
+ \expandafter\endbatchfile
+\else
+ \expandafter\endgroup
+\fi
+%</internal>
+%<package>\NeedsTeXFormat{LaTeX2e}
+%<package>\RequirePackage{expl3}
+%<package>\ProvidesExplPackage
+%<package> {conteq} % Package name
+%<package> {2013/05/23} % Release date
+%<package> {0.1} % Release version
+%<package> {Various layouts for continued equalities} % Description
+%
+%<*driver>
+\documentclass[full]{l3doc}
+\usepackage[T1]{fontenc}
+\usepackage{lmodern}
+\usepackage{conteq}
+%\usepackage[numbered]{hypdoc}
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+\begin{document}
+ \DocInput{\jobname.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \GetFileInfo{\jobname.sty}
+%
+% \CheckSum{166}
+%
+%
+%\title{^^A
+% \textsf{conteq} --- continued equalities\thanks{^^A
+% This file describes version \fileversion, last revised \filedate.^^A
+% }^^A
+%}
+%\author{Joachim Breitner\thanks{E-mail: mail@joachim-breitner.de}}
+%
+%\date{Released \filedate}
+%
+%\maketitle
+%
+%\changes{0.1}{2013/05/23}{Converted to DTX file}
+%
+%
+% \section{Introduction}
+%
+% There are various ways to layout an continued equality that spans multiple lines and has explanations along some steps. Often, the best layout is not clear beforehand, as it depends on the sizes of the various elements, or implementing it adds too much noise to the actual formulas. This package provides an environment for continued equalities (or inequalities) that allows you to easily define and switch layouts.
+%
+% \section{Usage}
+%
+% \DescribeEnv{conteq}
+% Our running example is the following continued equality:
+%
+% \begin{verbatim}
+% \begin{conteq}
+% e^{\pi\cdot i} \\
+% = -1 & Euler's formula \\
+% < 0 & this is an inequality \\
+% < \sqrt 3 \\
+% = \int e^{-x^2} dx & this is due to Gauss.
+% \end{conteq}
+% \end{verbatim}
+%
+% As you can see, the expressions of the continued equality are separated by |\\|, with equality signs (or other relations) at the beginning of all lines but the first. Some equalities also have explanations.
+%
+% The result of the above code is
+% \begin{conteq}
+% e^{\pi\cdot i} \\
+% = -1 & Euler's formula \\
+% < 0 & this is an inequality \\
+% < \sqrt 3 \\
+% = \int e^{-x^2} dx & this is due to Gauss.
+% \end{conteq}
+%
+% The expressions are typeset in math mode, while the explanation is assumed to be regular text. The curly braces around the explanations come from the default |\ConteqExplanationLayout|.
+
+% There are other layouts available, which you select with an optional parameter to |\begin{conteq}|, e.g.
+% \begin{verbatim}
+% \begin{conteq}[explline]
+% [..]
+% \end{conteq}
+% \end{verbatim}
+
+% The layouts defined by |conteq| are:
+
+% \paragraph{plain} The default layout, shown above.
+
+% \paragraph{explline} A layout that puts the explanations below the right-hand side of the equalty it is explaining. To be used when the explanations and righ-hand sides are long.
+% \begin{conteq}[explline]
+% e^{\pi\cdot i} \\
+% = -1 & Euler's formula \\
+% < 0 & this is an inequality \\
+% < \sqrt 3 \\
+% = \int e^{-x^2} dx & this is due to Gauss.
+% \end{conteq}
+
+
+% \paragraph{headline} Like plain, but the first expression is also vertically aligned with the right-hand sides.
+% \begin{conteq}[headline]
+% e^{\pi\cdot i} \\
+% = -1 & Euler's formula \\
+% < 0 & this is an inequality \\
+% < \sqrt 3 \\
+% = \int e^{-x^2} dx & this is due to Gauss.
+% \end{conteq}
+
+% \paragraph{onecolumn} A combination of \textbf{explline} and \textbf{headline} that puts everything in one column, for maximum space efficiency.
+% \begin{conteq}[onecolumn]
+% e^{\pi\cdot i} \\
+% = -1 & Euler's formula \\
+% < 0 & this is an inequality \\
+% < \sqrt 3 \\
+% = \int e^{-x^2} dx & this is due to Gauss.
+% \end{conteq}
+
+% \paragraph{oneline} A layout, more for demonstrational purposes, that ignores the explanations and puts everything in one line.
+% \begin{conteq}[oneline]
+% e^{\pi\cdot i} \\
+% = -1 & Euler's formula \\
+% < 0 & this is an inequality \\
+% < \sqrt 3 \\
+% = \int e^{-x^2} dx & this is due to Gauss.
+% \end{conteq}
+
+% \DescribeMacro{\ConteqSetDefaultLayout} You can change the default layout using |\ConteqSetDefaultLayout|\marg{layout}
+
+% \section{Defining layouts}
+%
+% \DescribeMacro{\ConteqDefineLayout}
+% To define a new layout you use |\ConteqDefineLayout|, which takes seven arguments:
+% \begin{enumerate}
+% \item The name of the layout,
+% \item What to put before the continued equalities,
+% \item the left-hand side of the first equality,
+% \item the right-hand side of equalities without explanation,
+% \item the right-hand side of equalities with explanation,
+% \item the line separator and
+% \item what to put after the continued equalities.
+% \end{enumerate}
+%
+% For example the existing layouts are defined using
+% \iffalse
+%<*layouts>
+% \fi
+% \begin{macrocode}
+
+\ConteqDefineLayout
+ {plain}
+ {\begin{align*}}
+ { #1 }
+ { & #1 }
+ { & #1 && #2 }
+ { \\ }
+ {\end{align*}}
+\ConteqSetDefaultLayout{plain}
+
+\ConteqDefineLayout
+ {explline}
+ {\begin{align*}}
+ { #1 }
+ { & #1 }
+ { & #1 \\ & \mathrel{\phantom{=}} #2 }
+ { \\ }
+ {\end{align*}}
+
+\ConteqDefineLayout
+ {headline}
+ {\begin{align*}}
+ { &\mathrel{\phantom{=}} #1 \\ }
+ { & #1 }
+ { & #1 && #2 }
+ { \\ }
+ {\end{align*}}
+
+\ConteqDefineLayout
+ {onecolumn}
+ {\begin{align*}}
+ { &\mathrel{\phantom{=}} #1 \\ }
+ { & #1 }
+ { & #1 \\ & \mathrel{\phantom{=}} #2 }
+ { \\ }
+ {\end{align*}}
+
+\ConteqDefineLayout
+ {oneline}
+ {\[}
+ { #1 }
+ { #1 }
+ { #1 }
+ {}
+ {\]}
+
+% \end{macrocode}
+%
+% \section{Changing the explanation style}
+%
+% \DescribeMacro{\ConteqExplStyle}
+% The explanation is formatted using the macro |\ConteqExplStyle|\marg{explanation}, which is by default defined as
+% \begin{macrocode}
+\newcommand{\ConteqExplStyle}[1]{\{~#1~\}}
+% \end{macrocode}
+%
+% To change the style, simply redefine this macro using, for example:
+% \begin{verbatim}
+% \renewcommand{\ConteqExplStyle}{\textit{-- #1}}
+% \end{verbatim}
+%
+%
+% \section{Future work}
+%
+% This package is, at the time of writing, very new, so please le me know about problems you are having or features you are missing.
+%
+% One feature that I am considering is an auto-selection of layouts, so when you specify |\begin{conteq}[plain,explline,onecolumn]...\end{conteq}|, it will analyze the table and select, from your list of layouts, the first one that is ``ok'', where ``ok'' would be some layout-specific heuristic taking the size of the expressions and explanations as well as the current |\linewidth| into account. If you think that this would be useful to you, please let me know.
+%
+% \iffalse
+%</layouts>
+% \fi
+%
+%\StopEventually{^^A
+% \PrintChanges
+% \PrintIndex
+%}
+%
+
+%
+% \section{Implementation}
+%
+% \iffalse
+%<*package>
+% \fi
+%
+% \subsection{Package loading}
+%
+% \begin{macrocode}
+\RequirePackage{amsmath}
+\RequirePackage{environ}
+% \end{macrocode}
+
+% \subsection{Defining Messages}
+%
+% \begin{macrocode}
+\msg_new:nnn
+ {conteq}
+ {empty}
+ { \msg_warning_text:n{conteq}:~Empty~conteq~environment~\msg_line_context: }
+
+\msg_new:nnn
+ {conteq}
+ {ignoreddata}
+ { \msg_warning_text:n{conteq}:~Ignored~text~\msg_line_context: }
+
+\msg_new:nnn
+ {conteq}
+ {undefinedlayout}
+ { \msg_critical_text:n{conteq}:~Undefined~layout~``#1''~\msg_line_context: }
+% \end{macrocode}
+
+% \subsection{Declaring local variables}
+%
+% \begin{macrocode}
+\tl_new:N \l_conteq_default_layout_tl
+\tl_new:N \l_conteq_layout_tl
+\tl_new:N \l_conteq_body_tl
+\tl_new:N \l_conteq_lines_seq
+\tl_new:N \l_conteq_cells_seq
+\tl_new:N \l_conteq_head_tl
+\tl_new:N \l_conteq_lastline_tl
+\tl_new:N \l_conteq_rhs_tl
+\tl_new:N \l_conteq_expl_tl
+\tl_new:N \l_conteq_result_tl
+% \end{macrocode}
+
+% \subsection{Layouts}
+%
+% \begin{macro}{\ConteqSetDefaultLayout}
+% The code to set the default layout.
+% \begin{macrocode}
+\cs_new_protected:Nn \conteq_set_default_layout:n {
+ \tl_set:Nn \l_conteq_default_layout_tl {#1}
+}
+\cs_new_eq:NN \ConteqSetDefaultLayout \conteq_set_default_layout:n
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ConteqDefineLayout}
+% The code to define new layouts.
+% \begin{macrocode}
+\cs_new_protected:Nn \conteq_define_layout:nnnnnnn {
+ \cs_new_protected:cn {conteq_#1_begin:} { #2 }
+ \cs_new_protected:cn {conteq_#1_lhs:n} { #3 }
+ \cs_new_protected:cn {conteq_#1_rhs_only:n} { #4 }
+ \cs_new_protected:cn {conteq_#1_rhs_expl:nn} { #5 }
+ \cs_new_protected:cn {conteq_#1_nl:} { #6 }
+ \cs_new_protected:cn {conteq_#1_end:} { #7 }
+}
+\cs_new_eq:NN \ConteqDefineLayout \conteq_define_layout:nnnnnnn
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Expansion utility function}
+%
+% \begin{macro}{\conteq_args_once:Nn, \conteq_args_once:NV, \conteq_args_once:Nnn, \conteq_args_once:NVV}
+% For ease of debugging(?) we construct a token list that contains exactly the tokens that a programmer would enter to create the layout manually. For that we need some fine-grained control over expansion.
+%
+% \begin{macrocode}
+\cs_new:Npn \conteq_args_once:Nn #1#2 {
+ \exp_not:o {#1 {#2}}
+}
+\cs_generate_variant:Nn \conteq_args_once:Nn {NV}
+
+\cs_new:Npn \conteq_args_once:Nnn #1#2#3 {
+ \exp_not:o {#1 {#2}{#3}}
+}
+\cs_generate_variant:Nn \conteq_args_once:Nnn {NVV}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Main code}
+%
+% \begin{macro}{\conteq_print_line:nn}
+% This macro splits and prints one line of the table. The second argument is either |\\| or, for the last line of the table, empty.
+% \begin{macrocode}
+\cs_new_protected:Npn \conteq_print_line:Nnn #1#2#3 {
+ \seq_set_split:Nnn \l_conteq_cells_seq { & } {#2}
+ \seq_pop_left:NN \l_conteq_cells_seq \l_conteq_rhs_tl
+ \tl_clear:N \l_conteq_expl_tl
+ \seq_if_empty:NF \l_conteq_cells_seq {
+ \seq_pop_left:NN \l_conteq_cells_seq \l_conteq_expl_tl
+ }
+ \tl_if_blank:VTF \l_conteq_expl_tl {
+ \tl_put_right:Nx #1 {
+ \conteq_args_once:NV \conteq_rhs_only:n \l_conteq_rhs_tl
+ }
+ }{
+ \tl_set:Nx \l_tmpa_tl {\exp_not:N \text {\exp_not:N \ConteqExplStyle {\exp_not:V \l_conteq_expl_tl}}}
+ \tl_put_right:Nx #1 {
+ \conteq_args_once:NVV \conteq_rhs_expl:nn \l_conteq_rhs_tl \l_tmpa_tl
+ }
+ }
+ \seq_if_empty:NF \l_conteq_cells_seq {
+ \msg_warning:nn{conteq}{ignoreddata}
+ }
+ \tl_put_right:Nn #1 {#3}
+}
+\cs_generate_variant:Nn \conteq_print_line:Nnn {Nno}
+\cs_generate_variant:Nn \conteq_print_line:Nnn {NVn}
+% \end{macrocode}
+% \end{macro}
+
+%
+% \begin{environment}{conteq}
+%
+% The main environment of the package.
+% \begin{macrocode}
+\NewEnviron{conteq}[1][\l_conteq_default_layout_tl]{
+ \tl_set:NV \l_conteq_body_tl \BODY
+
+ \tl_if_blank:oT \l_conteq_body_tl{
+ \msg_warning:nn{conteq}{empty}
+ }
+% \end{macrocode}
+
+% Figure out the layout to use\ldots
+% \begin{macrocode}
+ \tl_set:Nn \l_conteq_layout_tl {#1}
+% \end{macrocode}
+% and set the various functions accordingly, if the layout exists.
+% \begin{macrocode}
+ \cs_if_exist:cTF {conteq_ \l_conteq_layout_tl _ begin:}{
+ \clist_map_inline:nn{begin:, lhs:n,rhs_only:n, rhs_expl:nn, nl:, end:}{
+ \cs_set_eq:cc {conteq_##1}{conteq_\l_conteq_layout_tl _##1}
+ }
+ }{
+ \msg_critical:nnx{conteq}{undefined layout}{\l_conteq_layout_tl}
+ }
+% \end{macrocode}
+
+% Split the body into individual lines.
+% \begin{macrocode}
+ \seq_set_split:NnV \l_conteq_lines_seq { \\ } \l_conteq_body_tl
+
+ \tl_clear:N \l_conteq_result_tl
+% \end{macrocode}
+
+% If there is only one line, simply print it.
+% \begin{macrocode}
+
+ \int_case:nnn {\seq_count:N \l_conteq_lines_seq}
+ {
+ {1} {
+ \tl_put_right:NV \l_conteq_result_tl \conteq_begin:
+ \tl_put_right:NV \l_conteq_result_tl \l_conteq_body_tl
+ \tl_put_right:NV \l_conteq_result_tl \conteq_end:
+ }
+ }{
+% \end{macrocode}
+
+% Otherwise extract the head and the last line, and print each line using |\conteq_print_line:nn|
+% \begin{macrocode}
+ \seq_pop_left:NN \l_conteq_lines_seq \l_conteq_head_tl
+ \seq_pop_right:NN \l_conteq_lines_seq \l_conteq_lastline_tl
+
+ \tl_put_right:NV \l_conteq_result_tl \conteq_begin:
+ \tl_put_right:Nx \l_conteq_result_tl {
+ \conteq_args_once:NV \conteq_lhs:n \l_conteq_head_tl
+ }
+ \seq_map_inline:Nn \l_conteq_lines_seq {
+ \conteq_print_line:Nno \l_conteq_result_tl {##1} {\conteq_nl:}
+ }
+ \conteq_print_line:NVn \l_conteq_result_tl \l_conteq_lastline_tl {}
+ \tl_put_right:No \l_conteq_result_tl \conteq_end:
+ }
+ % Use this for debugging
+ %\tl_show:N \l_conteq_result_tl
+ \tl_use:N \l_conteq_result_tl
+}
+\endinput
+% \end{macrocode}
+%\end{environment}
+
+%
+% \iffalse
+%</package>
+% \fi
+%
+% \Finale
+\endinput
diff --git a/Master/texmf-dist/source/latex/conteq/conteq.ins b/Master/texmf-dist/source/latex/conteq/conteq.ins
new file mode 100644
index 00000000000..0fe38724fb3
--- /dev/null
+++ b/Master/texmf-dist/source/latex/conteq/conteq.ins
@@ -0,0 +1,82 @@
+%%
+%% This is file `conteq.ins',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% conteq.dtx (with options: `install')
+%% ----------------------------------------------------------------
+%% conteq --- continued equalities
+%% E-mail: mail@joachim-breitner.de
+%% Released under the LaTeX Project Public License v1.3c or later
+%% See http://www.latex-project.org/lppl.txt
+%% ----------------------------------------------------------------
+%%
+\input docstrip.tex
+\keepsilent
+\askforoverwritefalse
+\preamble
+----------------------------------------------------------------
+conteq --- continued equalities
+E-mail: mail@joachim-breitner.de
+Released under the LaTeX Project Public License v1.3c or later
+See http://www.latex-project.org/lppl.txt
+----------------------------------------------------------------
+
+\endpreamble
+\postamble
+
+Copyright (C) 2013 by Joachim Breitner <mail@joachim-breitner.de>
+
+This work may be distributed and/or modified under the
+conditions of the LaTeX Project Public License (LPPL), either
+version 1.3c of this license or (at your option) any later
+version. The latest version of this license is in the file:
+
+http://www.latex-project.org/lppl.txt
+
+This work is "maintained" (as per LPPL maintenance status) by
+Joachim Breitner.
+
+This work consists of the file conteq.dtx
+and the derived files conteq.ins,
+ conteq.pdf and
+ conteq.sty.
+
+\endpostamble
+\usedir{tex/latex/conteq}
+\generate{
+ \file{\jobname.sty}{\from{\jobname.dtx}{package}
+ \from{\jobname.dtx}{layouts}}
+}
+\endbatchfile
+
+
+
+
+
+
+
+
+
+
+%%
+%% Copyright (C) 2013 by Joachim Breitner <mail@joachim-breitner.de>
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License (LPPL), either
+%% version 1.3c of this license or (at your option) any later
+%% version. The latest version of this license is in the file:
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% This work is "maintained" (as per LPPL maintenance status) by
+%% Joachim Breitner.
+%%
+%% This work consists of the file conteq.dtx
+%% and the derived files conteq.ins,
+%% conteq.pdf and
+%% conteq.sty.
+%%
+%%
+%% End of file `conteq.ins'.
diff --git a/Master/texmf-dist/tex/latex/conteq/conteq.sty b/Master/texmf-dist/tex/latex/conteq/conteq.sty
new file mode 100644
index 00000000000..68dbb6e6ce9
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/conteq/conteq.sty
@@ -0,0 +1,233 @@
+%%
+%% This is file `conteq.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% conteq.dtx (with options: `package')
+%% conteq.dtx (with options: `layouts')
+%% ----------------------------------------------------------------
+%% conteq --- continued equalities
+%% E-mail: mail@joachim-breitner.de
+%% Released under the LaTeX Project Public License v1.3c or later
+%% See http://www.latex-project.org/lppl.txt
+%% ----------------------------------------------------------------
+%%
+\NeedsTeXFormat{LaTeX2e}
+\RequirePackage{expl3}
+\ProvidesExplPackage
+ {conteq} % Package name
+ {2013/05/23} % Release date
+ {0.1} % Release version
+ {Various layouts for continued equalities} % Description
+
+
+
+
+
+
+
+
+
+
+\RequirePackage{amsmath}
+\RequirePackage{environ}
+
+\msg_new:nnn
+ {conteq}
+ {empty}
+ { \msg_warning_text:n{conteq}:~Empty~conteq~environment~\msg_line_context: }
+
+\msg_new:nnn
+ {conteq}
+ {ignoreddata}
+ { \msg_warning_text:n{conteq}:~Ignored~text~\msg_line_context: }
+
+\msg_new:nnn
+ {conteq}
+ {undefinedlayout}
+ { \msg_critical_text:n{conteq}:~Undefined~layout~``#1''~\msg_line_context: }
+
+\tl_new:N \l_conteq_default_layout_tl
+\tl_new:N \l_conteq_layout_tl
+\tl_new:N \l_conteq_body_tl
+\tl_new:N \l_conteq_lines_seq
+\tl_new:N \l_conteq_cells_seq
+\tl_new:N \l_conteq_head_tl
+\tl_new:N \l_conteq_lastline_tl
+\tl_new:N \l_conteq_rhs_tl
+\tl_new:N \l_conteq_expl_tl
+\tl_new:N \l_conteq_result_tl
+
+\cs_new_protected:Nn \conteq_set_default_layout:n {
+ \tl_set:Nn \l_conteq_default_layout_tl {#1}
+}
+\cs_new_eq:NN \ConteqSetDefaultLayout \conteq_set_default_layout:n
+\cs_new_protected:Nn \conteq_define_layout:nnnnnnn {
+ \cs_new_protected:cn {conteq_#1_begin:} { #2 }
+ \cs_new_protected:cn {conteq_#1_lhs:n} { #3 }
+ \cs_new_protected:cn {conteq_#1_rhs_only:n} { #4 }
+ \cs_new_protected:cn {conteq_#1_rhs_expl:nn} { #5 }
+ \cs_new_protected:cn {conteq_#1_nl:} { #6 }
+ \cs_new_protected:cn {conteq_#1_end:} { #7 }
+}
+\cs_new_eq:NN \ConteqDefineLayout \conteq_define_layout:nnnnnnn
+\cs_new:Npn \conteq_args_once:Nn #1#2 {
+ \exp_not:o {#1 {#2}}
+}
+\cs_generate_variant:Nn \conteq_args_once:Nn {NV}
+
+\cs_new:Npn \conteq_args_once:Nnn #1#2#3 {
+ \exp_not:o {#1 {#2}{#3}}
+}
+\cs_generate_variant:Nn \conteq_args_once:Nnn {NVV}
+\cs_new_protected:Npn \conteq_print_line:Nnn #1#2#3 {
+ \seq_set_split:Nnn \l_conteq_cells_seq { & } {#2}
+ \seq_pop_left:NN \l_conteq_cells_seq \l_conteq_rhs_tl
+ \tl_clear:N \l_conteq_expl_tl
+ \seq_if_empty:NF \l_conteq_cells_seq {
+ \seq_pop_left:NN \l_conteq_cells_seq \l_conteq_expl_tl
+ }
+ \tl_if_blank:VTF \l_conteq_expl_tl {
+ \tl_put_right:Nx #1 {
+ \conteq_args_once:NV \conteq_rhs_only:n \l_conteq_rhs_tl
+ }
+ }{
+ \tl_set:Nx \l_tmpa_tl {\exp_not:N \text {\exp_not:N \ConteqExplStyle {\exp_not:V \l_conteq_expl_tl}}}
+ \tl_put_right:Nx #1 {
+ \conteq_args_once:NVV \conteq_rhs_expl:nn \l_conteq_rhs_tl \l_tmpa_tl
+ }
+ }
+ \seq_if_empty:NF \l_conteq_cells_seq {
+ \msg_warning:nn{conteq}{ignoreddata}
+ }
+ \tl_put_right:Nn #1 {#3}
+}
+\cs_generate_variant:Nn \conteq_print_line:Nnn {Nno}
+\cs_generate_variant:Nn \conteq_print_line:Nnn {NVn}
+
+\NewEnviron{conteq}[1][\l_conteq_default_layout_tl]{
+ \tl_set:NV \l_conteq_body_tl \BODY
+
+ \tl_if_blank:oT \l_conteq_body_tl{
+ \msg_warning:nn{conteq}{empty}
+ }
+
+ \tl_set:Nn \l_conteq_layout_tl {#1}
+ \cs_if_exist:cTF {conteq_ \l_conteq_layout_tl _ begin:}{
+ \clist_map_inline:nn{begin:, lhs:n,rhs_only:n, rhs_expl:nn, nl:, end:}{
+ \cs_set_eq:cc {conteq_##1}{conteq_\l_conteq_layout_tl _##1}
+ }
+ }{
+ \msg_critical:nnx{conteq}{undefined layout}{\l_conteq_layout_tl}
+ }
+
+ \seq_set_split:NnV \l_conteq_lines_seq { \\ } \l_conteq_body_tl
+
+ \tl_clear:N \l_conteq_result_tl
+
+
+ \int_case:nnn {\seq_count:N \l_conteq_lines_seq}
+ {
+ {1} {
+ \tl_put_right:NV \l_conteq_result_tl \conteq_begin:
+ \tl_put_right:NV \l_conteq_result_tl \l_conteq_body_tl
+ \tl_put_right:NV \l_conteq_result_tl \conteq_end:
+ }
+ }{
+
+ \seq_pop_left:NN \l_conteq_lines_seq \l_conteq_head_tl
+ \seq_pop_right:NN \l_conteq_lines_seq \l_conteq_lastline_tl
+
+ \tl_put_right:NV \l_conteq_result_tl \conteq_begin:
+ \tl_put_right:Nx \l_conteq_result_tl {
+ \conteq_args_once:NV \conteq_lhs:n \l_conteq_head_tl
+ }
+ \seq_map_inline:Nn \l_conteq_lines_seq {
+ \conteq_print_line:Nno \l_conteq_result_tl {##1} {\conteq_nl:}
+ }
+ \conteq_print_line:NVn \l_conteq_result_tl \l_conteq_lastline_tl {}
+ \tl_put_right:No \l_conteq_result_tl \conteq_end:
+ }
+ % Use this for debugging
+ %\tl_show:N \l_conteq_result_tl
+ \tl_use:N \l_conteq_result_tl
+}
+
+
+
+
+
+
+
+
+
+
+\ConteqDefineLayout
+ {plain}
+ {\begin{align*}}
+ { #1 }
+ { & #1 }
+ { & #1 && #2 }
+ { \\ }
+ {\end{align*}}
+\ConteqSetDefaultLayout{plain}
+
+\ConteqDefineLayout
+ {explline}
+ {\begin{align*}}
+ { #1 }
+ { & #1 }
+ { & #1 \\ & \mathrel{\phantom{=}} #2 }
+ { \\ }
+ {\end{align*}}
+
+\ConteqDefineLayout
+ {headline}
+ {\begin{align*}}
+ { &\mathrel{\phantom{=}} #1 \\ }
+ { & #1 }
+ { & #1 && #2 }
+ { \\ }
+ {\end{align*}}
+
+\ConteqDefineLayout
+ {onecolumn}
+ {\begin{align*}}
+ { &\mathrel{\phantom{=}} #1 \\ }
+ { & #1 }
+ { & #1 \\ & \mathrel{\phantom{=}} #2 }
+ { \\ }
+ {\end{align*}}
+
+\ConteqDefineLayout
+ {oneline}
+ {\[}
+ { #1 }
+ { #1 }
+ { #1 }
+ {}
+ {\]}
+
+\newcommand{\ConteqExplStyle}[1]{\{~#1~\}}
+
+%%
+%% Copyright (C) 2013 by Joachim Breitner <mail@joachim-breitner.de>
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License (LPPL), either
+%% version 1.3c of this license or (at your option) any later
+%% version. The latest version of this license is in the file:
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% This work is "maintained" (as per LPPL maintenance status) by
+%% Joachim Breitner.
+%%
+%% This work consists of the file conteq.dtx
+%% and the derived files conteq.ins,
+%% conteq.pdf and
+%% conteq.sty.
+%%
+%%
+%% End of file `conteq.sty'.
diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check
index 0ea9fbfe4d2..bdb96cdf56b 100755
--- a/Master/tlpkg/bin/tlpkg-ctan-check
+++ b/Master/tlpkg/bin/tlpkg-ctan-check
@@ -122,7 +122,7 @@ my @TLP_working = qw(
combelow combine combinedgraphics comfortaa comma commado commath comment
compactbib
complexity components-of-TeX comprehensive computational-complexity
- concepts concmath concmath-fonts concprog confproc constants
+ concepts concmath concmath-fonts concprog confproc constants conteq
context-account context-algorithmic context-bnf context-chromato
context-construction-plan context-cyrillicnumbers
context-degrade context-filter context-fixme
diff --git a/Master/tlpkg/tlpsrc/collection-mathextra.tlpsrc b/Master/tlpkg/tlpsrc/collection-mathextra.tlpsrc
index 10cee30a3d9..49b147b473e 100644
--- a/Master/tlpkg/tlpsrc/collection-mathextra.tlpsrc
+++ b/Master/tlpkg/tlpsrc/collection-mathextra.tlpsrc
@@ -15,6 +15,7 @@ depend ccfonts
depend commath
depend concmath
depend concrete
+depend conteq
depend eqnarray
depend extarrows
depend extpfeil
diff --git a/Master/tlpkg/tlpsrc/conteq.tlpsrc b/Master/tlpkg/tlpsrc/conteq.tlpsrc
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/Master/tlpkg/tlpsrc/conteq.tlpsrc