summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/semtex
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2020-09-08 03:02:12 +0000
committerNorbert Preining <norbert@preining.info>2020-09-08 03:02:12 +0000
commitbc2d0660f4f460b55009ab4e525f2a0e4cde6187 (patch)
treed35815089faf23c45f4f21690e42cfcc7c65a5fd /macros/latex/contrib/semtex
parent57edbaffbe7daad894e3036a4123acd03e0fdb9b (diff)
CTAN sync 202009080302
Diffstat (limited to 'macros/latex/contrib/semtex')
-rw-r--r--macros/latex/contrib/semtex/README.md37
-rw-r--r--macros/latex/contrib/semtex/semtex.pdfbin0 -> 77110 bytes
-rw-r--r--macros/latex/contrib/semtex/semtex.sty83
-rw-r--r--macros/latex/contrib/semtex/semtex.tex229
4 files changed, 349 insertions, 0 deletions
diff --git a/macros/latex/contrib/semtex/README.md b/macros/latex/contrib/semtex/README.md
new file mode 100644
index 0000000000..d74f5f9f5c
--- /dev/null
+++ b/macros/latex/contrib/semtex/README.md
@@ -0,0 +1,37 @@
+semtex -- For stripped SemanTeX documents
+--------------------------------------
+
+The package semtex is a small LaTeX package that adds a collection
+of simple macros for parentheses and bullets. It exists for
+one purpose only: To be loaded by documents which were
+originally typeset using the package SemanTeX, but which have
+been stripped of SemanTeX markup using the package stripsemantex.
+Therefore, unless your document is one of those,
+simply **don't use this package**.
+
+And even if your document *is* one of those, there is a good
+chance you will not have to load it after all. In most cases,
+you will be able to replace the macros it provides by macros
+from other packages.
+
+----------------------------------------------------------------
+semtex -- For stripped SemanTeX documents
+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 <sorsted@gmail.com>
+
+The package is loaded via \usepackage{semantex}
+
+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/macros/latex/contrib/semtex/semtex.pdf b/macros/latex/contrib/semtex/semtex.pdf
new file mode 100644
index 0000000000..5ac49589d8
--- /dev/null
+++ b/macros/latex/contrib/semtex/semtex.pdf
Binary files differ
diff --git a/macros/latex/contrib/semtex/semtex.sty b/macros/latex/contrib/semtex/semtex.sty
new file mode 100644
index 0000000000..1824d0389c
--- /dev/null
+++ b/macros/latex/contrib/semtex/semtex.sty
@@ -0,0 +1,83 @@
+\RequirePackage{xparse}
+\ProvidesExplPackage{semtex}{2020/09/07}{0.1beta}{}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% semtex -- for documents stripped of SemanTeX markup %
+% https://ctan.org/pkg/semantex %
+% (C) 2020 Sebastian Ørsted %
+% sorsted@gmail.com %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% Bullets:
+
+\box_new:N \g__semantex_bullet_box
+\hbox_set:Nn \g__semantex_bullet_box { $\cdot$ }
+\box_scale:Nnn \g__semantex_bullet_box {1.2} {1.2}
+\tl_set:Nn\g_semantex_bullet
+{
+ \box_move_up:nn{-0.25ex}{\box_use:N \g__semantex_bullet_box}
+}
+
+\tl_set:Nn\g_semantex_double_bullet{\g_semantex_bullet \g_semantex_bullet}
+
+\tl_set_eq:NN\SemantexBullet \g_semantex_bullet
+
+\tl_set_eq:NN \SemantexDoubleBullet \g_semantex_double_bullet
+
+
+% Parentheses:
+
+\cs_new:Npn\SemantexLeft { \mathopen{}\mathclose\bgroup\left }
+
+\cs_new:Npn\SemantexRight { \aftergroup\egroup\right }
+
+\tl_new:N\SemantexDelimiterSize
+
+\DeclareDocumentCommand\SemantexParentheses { mmmm }
+{
+ \str_case:nnF { #1 } % This is where \big,\Big, etc. go.
+ {
+ { normal } {
+ \group_begin:
+ \tl_clear:N \SemantexDelimiterSize
+ \str_if_eq:nnF { #2 } { . } { \mathopen #2 }
+ #4
+ \str_if_eq:nnF { #3 } { . } { \mathclose #3 }
+ \group_end:
+ }
+ { auto } {
+ \group_begin:
+ \tl_set_eq:NN \SemantexDelimiterSize \middle
+ \SemantexLeft #2
+ #4
+ \SemantexRight #3
+ \group_end:
+ }
+ { * } {
+ \group_begin:
+ \tl_set_eq:NN \SemantexDelimiterSize \middle
+ \SemantexLeft #2
+ #4
+ \SemantexRight #3
+ \group_end:
+ }
+ }
+ {
+ \group_begin:
+ \tl_set_eq:NN\SemantexDelimiterSize #1
+ \mathopen #1 #2
+ #4
+ \mathclose #1 #3
+ \group_end:
+ }
+}
+
+\DeclareDocumentCommand\SemantexNoParentheses { m }
+{
+ \group_begin:
+ \tl_clear:N\SemantexDelimiterSize
+ #1
+ \group_end:
+} \ No newline at end of file
diff --git a/macros/latex/contrib/semtex/semtex.tex b/macros/latex/contrib/semtex/semtex.tex
new file mode 100644
index 0000000000..10805c37bd
--- /dev/null
+++ b/macros/latex/contrib/semtex/semtex.tex
@@ -0,0 +1,229 @@
+\documentclass[a4paper,article,oneside,english,10pt]{memoir}
+
+\makeatletter
+
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage{babel}
+\usepackage[noDcommand,slantedGreeks]{kpfonts}
+
+\frenchspacing
+
+\usepackage{mathtools,etoolbox, microtype,xspace,color}
+
+\usepackage[shortlabels]{enumitem}%control lists
+
+\usepackage[draft]{fixme}
+
+%Setup of memoir:
+\pagestyle{plain} %change to heading for running headings
+\nouppercaseheads %running heads should not be capitalized
+\captionnamefont{\small} %captions with small font
+\captiontitlefont{\small}
+\makeevenhead{headings}{\thepage}{}{\itshape\leftmark} %make headings italic instead of slanted (though we do not use headings right now)
+\makeoddhead{headings}{\itshape\rightmark}{}{\thepage}
+
+\setlrmarginsandblock{4cm}{*}{*}
+\setulmarginsandblock{4cm}{*}{*}
+\checkandfixthelayout
+
+\raggedbottomsectiontrue%less harse than \raggedbottom
+%\allowdisplaybreaks %long equations may break
+
+\g@addto@macro\bfseries{\boldmath} %make math in bold text automatically bold
+
+\usepackage[english=american]{csquotes}
+
+\usepackage[hidelinks]{hyperref}
+
+\usepackage[nameinlink]{cleveref}
+
+\title{\texttt{semtex}: For stripped Seman\!\TeX\ documents (v$0.1\beta$)}
+\date{\today}
+\author{Sebastian Ørsted (\href{mailto:sorsted@gmail.com}{sorsted@gmail.com})}
+
+\hypersetup{
+ pdfauthor={Sebastian Ørsted},
+ pdftitle={semtex: For stripped SemanTeX documents},
+ %pdfsubject={},
+ %pdfkeywords={},
+ %pdfproducer={Latex with hyperref, or other system},
+ %pdfcreator={pdflatex, or other tool},
+}
+
+\usepackage{showexpl}
+
+\lstset{%
+ language=[LaTeX]TeX,
+ basicstyle=\ttfamily\small,
+ commentstyle=\itshape\ttfamily\small,
+ alsoletter={\\},
+ escapechar=@,
+ breaklines=true,
+ breakindent={0pt},
+ captionpos=t,
+ pos=r,
+ tabsize=2,
+ %inputencoding=utf8,
+ explpreset={numbers=none,},
+ texcl=false,
+ wide=false,
+ width=.45\textwidth,
+}
+
+\newcommand\mylst{\lstinline[mathescape]}
+
+\def\<#1\>{\textrm{\textlangle\textit{#1}\textrangle}}
+
+\def\usercommand\<#1\>{\textrm{\textbackslash\textlangle\textit{#1}\textrangle}}
+
+\def\values\<#1\>{\textrm{\textlangle\textup{#1}\textrangle}}
+
+\def\num#1{\textsubscript{\textup{#1}}}
+
+\newcommand\default[1]{\smash{\underline{\smash{#1}}}}
+
+\newcommand\commandname[1]{\textbackslash\texttt{#1}}
+
+\let\pack=\texttt
+
+\newcommand\semantex{Seman\!\TeX\xspace}
+
+\newcommand\stripsemantex{\texttt{stripsemantex}\xspace}
+
+\usepackage{hologo}
+
+% Setting up SemanTeX:
+
+\usepackage{semtex}
+
+\makeatother
+
+\begin{document}
+
+\maketitle
+
+\noindent
+The package~\pack{semtex} is a small package
+that adds a collection of simple macros for parentheses
+and bullets.
+It exists for one purpose only:
+To be loaded by documents which were originally typeset
+using the package \semantex, but which have been stripped
+of \semantex markup using the package~\pack{stripsemantex}.
+Therefore, unless your document is one of those,
+simply \textbf{don't use this package}.
+
+
+And even if your document \emph{is} one of those, there is a good chance
+you will not have to load it after all. In most cases, you will be able to replace
+the macros it provides by macros from other packages.
+
+\chapter*{Bullet commands}
+
+The package provides the commands \mylst!\SemantexBullet! and \mylst!\SemantexDoubleBullet!.
+These commands print bullets which are smaller (and prettier, in my opinion)
+than the standard \lstinline!\bullet! command from~\LaTeX:
+\begin{LTXexample}
+$ H^{\SemantexBullet} $,
+$ H^{\SemantexDoubleBullet} $
+(compare to $H^{\bullet}$)
+\end{LTXexample}
+You can recreate them yourself as follows, rendering
+the package \pack{semtex} unnecessary for this purpose:
+\begin{lstlisting}
+\newcommand\SemantexBullet{%
+ \raisebox{-0.25ex}{\scalebox{1.2}{$\cdot$}}%
+}
+\newcommand\SemantexDoubleBullet{%
+ \SemantexBullet\SemantexBullet
+}
+\end{lstlisting}
+
+\chapter*{Replacements for \texorpdfstring{\textbackslash\texttt{left} and~\textbackslash\texttt{right}}{\left and \right}}
+
+The package provides the commands \mylst!\SemantexLeft!
+and~\mylst!\SemantexRight!
+These work just like \lstinline!\left...\right!, but fix some spacing issues
+around these:
+\begin{LTXexample}
+\[
+ \SemantexLeft(
+ \frac{1}{2}
+ \SemantexRight]
+\]
+\end{LTXexample}
+They are completely equivalent to~\lstinline!\mleft! and~\lstinline!\mright!
+from the package~\pack{mleftright}, so it is safe to just load that package
+and replace the above commands by \lstinline!\mleft...\mright! instead.
+Alternatively, you can recreate them yourself by
+\begin{lstlisting}
+\newcommand\SemantexLeft{%
+ \mathopen{}\mathclose\bgroup\left
+}
+
+\newcommand\SemantexRight{%
+ \aftergroup\egroup\right
+}
+\end{lstlisting}
+
+\chapter*{Commands for scaled delimiters}
+
+First and foremost, the package provides the command
+\begin{lstlisting}
+\SemantexParentheses{@\values\<normal|auto|*|{\textit{other}}\>@}{@\<left parenthesis\>@}!\\
+ {@\<right parenthesis\>@}{@\<content\>@}
+\end{lstlisting}
+This one writes \<content\> enclosed in the pair of parentheses
+and with the size given by the first argument.
+Here,~\lstinline!normal! means normal size
+parentheses,
+and \lstinline!auto! and~\lstinline!*!
+mean auto-scaled parentheses using~\lstinline!\SemantexLeft...\SemantexRight!.
+If another value is received, that value
+is used for the parenthesis size,
+so the intended values are~\lstinline!\big!, \lstinline!\Big!,
+\lstinline!\bigg!,~\lstinline!\Bigg!:
+\begin{LTXexample}
+$\SemantexParentheses{normal}{(}{
+ )}{\frac{a}{b}}$,
+$\SemantexParentheses{auto}{[}{]}{
+ \frac{a}{b}}$,
+$\SemantexParentheses{\big}{
+ \langle}{\rangle}{\frac{a}{b}}$,
+$\SemantexParentheses{\Bigg}{\{}{
+ \}}{\frac{a}{b}}$,
+\end{LTXexample}
+The important property of this command
+is that inside the~\<content\>, you can access
+the delimiter size at any point using
+the command~\lstinline!\SemantexDelimiterSize!:
+\begin{LTXexample}
+$\SemantexParentheses{\Bigg}{\{}{\}}{
+ \frac{a}{b}
+ \SemantexDelimiterSize|
+ \frac{u}{v}
+}$
+\end{LTXexample}
+
+Secondly, the package provides the command
+\begin{lstlisting}
+\SemantexNoParentheses{@\<content\>@}
+\end{lstlisting}
+This command prints the content with no parentheses, but importantly, it also resets
+the command \lstinline!\SemantexDelimiterSize!
+to~\lstinline!{}!, i.e.~blank.
+This makes the following work:
+\begin{LTXexample}
+$\SemantexParentheses{\Bigg}{\{}{\}}{
+ \frac{a}{b}
+ \SemantexDelimiterSize|
+ \SemantexNoParentheses{
+ a
+ \SemantexDelimiterSize|
+ b
+ }
+}$
+\end{LTXexample}
+
+\end{document} \ No newline at end of file