From bcef2848e43c83b6e9eac3afa81f6dd99fea6bd3 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sat, 29 Aug 2020 20:17:19 +0000 Subject: stricttex (29aug20) git-svn-id: svn://tug.org/texlive/trunk@56210 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/lualatex/stricttex/README.md | 34 ++++++ .../doc/lualatex/stricttex/stricttex.pdf | Bin 0 -> 55501 bytes .../doc/lualatex/stricttex/stricttex.tex | 132 +++++++++++++++++++++ 3 files changed, 166 insertions(+) create mode 100644 Master/texmf-dist/doc/lualatex/stricttex/README.md create mode 100644 Master/texmf-dist/doc/lualatex/stricttex/stricttex.pdf create mode 100644 Master/texmf-dist/doc/lualatex/stricttex/stricttex.tex (limited to 'Master/texmf-dist/doc/lualatex') diff --git a/Master/texmf-dist/doc/lualatex/stricttex/README.md b/Master/texmf-dist/doc/lualatex/stricttex/README.md new file mode 100644 index 00000000000..330a8fb4b02 --- /dev/null +++ b/Master/texmf-dist/doc/lualatex/stricttex/README.md @@ -0,0 +1,34 @@ +stricttex -- strictly balanced brackets and numbers in command names +-------------------------------------- + +The stricttex package is a small, LuaLaTeX-only package providing you with +three, sometimes useful features: + * It allows you to make brackets [...] ``strict'', meaning that + each [ must be balanced by a ]. + * It allows you to use numbers in command names, so + that you can do stuff like \newcommand\pi12{\pi_{12}}. + * It allows you to use numbers \emph{and} primes in command names, + so that you can do stuff like \newcommand\pi'12{\pi '_{12}}. + +---------------------------------------------------------------- +stricttex -- strictly balanced brackets and numbers in command names +Version: 0.1beta +Maintained by Sebastian Ørsted +E-mail: sorsted@gmail.com +Released under the LaTeX Project Public License v1.3c or later +See http://www.latex-project.org/lppl.txt +---------------------------------------------------------------- + +Copyright (C) 2020 by Sebastian Ørsted + +The package is loaded via \usepackage{leftindex} + +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 +Sebastian Ørsted. \ No newline at end of file diff --git a/Master/texmf-dist/doc/lualatex/stricttex/stricttex.pdf b/Master/texmf-dist/doc/lualatex/stricttex/stricttex.pdf new file mode 100644 index 00000000000..4003955e801 Binary files /dev/null and b/Master/texmf-dist/doc/lualatex/stricttex/stricttex.pdf differ diff --git a/Master/texmf-dist/doc/lualatex/stricttex/stricttex.tex b/Master/texmf-dist/doc/lualatex/stricttex/stricttex.tex new file mode 100644 index 00000000000..57242faa5c8 --- /dev/null +++ b/Master/texmf-dist/doc/lualatex/stricttex/stricttex.tex @@ -0,0 +1,132 @@ +\documentclass[a4paper,article,oneside,10pt]{memoir} + +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\usepackage{babel} +\usepackage{kpfonts,microtype} + +\usepackage{listings,xspace,showexpl} + +\usepackage[hidelinks]{hyperref} + +\frenchspacing + + +\lstset{ + language=[LaTeX]TeX, + basicstyle=\ttfamily\small, + commentstyle=\itshape\ttfamily\small, + escapechar=\%, + alsoletter={\\,0,1,2,3,4,5,6,7,8,9,'}, + breaklines=true, + breakindent={0pt}, + captionpos=t, + tabsize=2, + inputencoding=utf8, + extendedchars=true, + mathescape=true, +} + +\newcommand\strctttex{\texttt{stricttex}\xspace} + +\title{\strctttex\ -- strictly balanced brackets and numbers in command names (v0.1$\beta$)} +\date{\today} +\author{Sebastian \O rsted (\href{mailto:sorsted@gmail.com}{sorsted@gmail.com})} + +\hypersetup{ + pdfauthor={Sebastian \O rsted}, + pdftitle={leftindex -- left indices with better spacing}, +} + +\begin{document} + +\maketitle + +\noindent +The \strctttex package is a small, Lua\LaTeX-only package providing you with three, sometimes useful features: +\begin{itemize} + \item It allows you to make brackets \lstinline![...]! ``strict'', meaning that each~`\lstinline![! + must be balanced by a~\lstinline!]!. + \item It allows you to use numbers in command names, so + that you can do stuff like~\lstinline!\newcommand\pi12{\pi_{12}}!. + \item It allows you to use numbers \emph{and} primes in command names, + so that you can do stuff like~\lstinline!\newcommand\pi'12{\pi '_{12}}!. +\end{itemize} + +\chapter*{Making brackets strict} + +The package provides the commands +\begin{lstlisting} +\StrictBracketsOn +\StrictBracketsOff +\end{lstlisting} +Between these two commands, +all left brackets~\lstinline![! are replaced by~\lstinline![$\{$!, +and all right brackets~\lstinline!]! by~\lstinline!$\}$]!. This forces the brackets to be properly balanced. This is extremely useful in come packages, such as Seman\TeX, where you can then +do things that would otherwise cause errors, e.g. +\begin{lstlisting}[mathescape=false] +\StrictBracketsOn + $ \vf[upper=\vx[upper=2,lower=3]] $ +\StrictBracketsOff +\end{lstlisting} +Normal brackets can still be accessed by using the standard \TeX\ commands +\lstinline!\lbrack! and \lstinline!\rbrack!. +The replacement algorithm has two important exceptions: +\begin{itemize} + \item \emph{No} replacements apply to the commands~\lstinline!\[...\]!, which can therefore be used as normal. + \item If you absolute \emph{need} ordinary brackets, + you can write \lstinline!<[>! and~\lstinline!<]>! to access them. This works + in all contexts, so e.g. \lstinline!\<[>! and~\lstinline!\<]>! will work + just like \lstinline!\[! and~\lstinline!\]!. +\end{itemize} + +\newpage + +\chapter*{Allowing numbers (and possibly primes) in commands} + +The package provides the commands +\begin{lstlisting} +\NumbersInCommandsOn +\NumbersInCommandsOff +\NumbersAndPrimesInCommandsOn +\NumbersAndPrimesInCommandsOff +\end{lstlisting} +The first pair of commands allows you to define commands containing numbers. So the following will work: +\begin{lstlisting} +\NumbersInCommandsOn +\newcommand\pi12{\pi_{12}} +\newcommand\pi13{\pi_{13}} +\newcommand\pi23{\pi_{23}} +\newcommand\pi12comma34{\pi_{12,34}} +\NumbersInCommandsOff +\end{lstlisting} +Internally, what happens is that if a command is immediately followed by a number, +that numbers is replaced by a text string, i.e. +\lstinline!0!~gets replaced by~\lstinline!numberZERO!, +\lstinline!1!~gets replaced by~\lstinline!numberONE!, +etc. These long names have been chosen to prevent name clashes. +In other words, the code that is eventually passed to \TeX\ is +\begin{lstlisting} +\newcommand\pinumberONEnumberTWO{\pi_{12}} +\newcommand\pinumberONEnumberTHREE{\pi_{13}} +\newcommand\pinumberTWOnumberTHREE{\pi_{23}} +\newcommand\pinumberONEnumberTWOcommanumberTHREEnumberFOUR{\pi_{12,34}} +\end{lstlisting} +Needless to say, stuff like \lstinline!\kern11pt! will no longer work and will have to be +replaced by~\lstinline!\kern 11pt!. + +The commands \lstinline!\NumbersAndPrimesInCommandsOn! and~\lstinline!\...Off! work almost the same way, except they also allow +you to use \emph{primes}. So the following will work: +\begin{lstlisting} +\NumbersAndPrimesInCommandsOn +\newcommand\pi'12{\pi '_{12}} +\NumbersAndPrimesInCommandsOff +\end{lstlisting} +Internally, the algorithm works as before, except the prime~\lstinline!'! gets +replaced by \lstinline!symbolPRIME!. So what is eventually passed to \TeX\ is +\begin{lstlisting} +\newcommand\pisymbolPRIMEnumberONEnumberTWO{\pi '_{12}} +\end{lstlisting} + + +\end{document} \ No newline at end of file -- cgit v1.2.3