summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/semtex/semtex.tex
blob: 45e64e16da72a75aead691dd03e326202e42648d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
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 (v0.2)}
\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}