texlive[44543] Master/texmf-dist: easyformat (9jun17)

commits+karl at tug.org commits+karl at tug.org
Sat Jun 10 00:29:17 CEST 2017


Revision: 44543
          http://tug.org/svn/texlive?view=revision&revision=44543
Author:   karl
Date:     2017-06-10 00:29:17 +0200 (Sat, 10 Jun 2017)
Log Message:
-----------
easyformat (9jun17)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/easyformat/easyformat.pdf
    trunk/Master/texmf-dist/doc/latex/easyformat/easyformat.tex
    trunk/Master/texmf-dist/tex/latex/easyformat/easyformat.sty

Modified: trunk/Master/texmf-dist/doc/latex/easyformat/easyformat.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/easyformat/easyformat.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/easyformat/easyformat.tex	2017-06-09 22:29:05 UTC (rev 44542)
+++ trunk/Master/texmf-dist/doc/latex/easyformat/easyformat.tex	2017-06-09 22:29:17 UTC (rev 44543)
@@ -1,18 +1,21 @@
 % !TeX spellcheck = en_GB
 
-\documentclass[a4paper, 11pt]{article}
+\documentclass[11pt, cm-default]{l3doc}
+% 11pt and keep on using the Computer Modern.
+% We want to maintain the original look of
+% our documentation so away with the coloured
+% links and references as wel ↓↓↓
+\hypersetup{hidelinks}
+
 \usepackage[british]{babel}
-\usepackage[hidelinks]{hyperref}
 \usepackage{microtype}
 \usepackage{easyformat}
 
 \def\labelitemi{--}
 
-\def\easyformat{\texttt{easyformat}}
+\title{\pkg{easyformat}\\[.5em]
+		\large _the_ manual for the 2017/06/03 version (v1.4.0)}
 
-\title{\easyformat\\[.5em]
-		\large _the_ manual for the 2017/05/28 version (v1.3.0)}
-
 \author{Evert Provoost}
 
 \date{}
@@ -22,7 +25,7 @@
 	\maketitle
 	
 	\begin{abstract}
-		\easyformat\ is a package that allows the use of~\verb|_| to begin/end _italic_ or __bold__ and \verb|^| to begin/end ^smallcaps^. As an alternative to the standard \LaTeX\ \verb|\textit{italic}|, \verb|\textbf{bold}| and \verb|\textsc{smallcaps}|.
+		\pkg{easyformat} is a package that allows the use of~|_| to begin/end _italics_ or __boldface__ and |^| to begin/end ^smallcaps^. As an alternative to the standard \LaTeX\ |\textit{italic}|, |\textbf{bold}| and |\textsc{smallcaps}|.
 	\end{abstract}
 
 	\tableofcontents
@@ -36,7 +39,7 @@
 	%\newpage
 	
 	\section{Introduction}
-	Usually when you want to make something _italic_ or __bold__ in \LaTeX\ you insert \verb|\textit{italic}| or \verb|\textbf{bold}| respectively.
+	Usually when you want to make something _italic_ or __bold__ in \LaTeX\ you insert |\textit{italic}| or |\textbf{bold}| respectively.
 	
 	However when writing a book or another text where this formatting is common, this quickly becomes annoying to type.
 
@@ -48,28 +51,28 @@
 	Simple markuplanguages (eg. Markdown) have a more elegant solution.	
 	If you, for example, wanted to write:
 	\begin{quote}
-		__Stop!__, you _have_ to wait!
+		__Stop!__ You _have_ to wait!
 	\end{quote}
 
 	In Markdown, you'd type:
 	\begin{quote}
-		\verb|**Stop!**, you *have* to wait!|
+		|**Stop!** You *have* to wait!|
 	\end{quote}
 
 	As you can see it's a matter of _wanting_ italic or bold formatting, adding~*'s where needed and done; no (long) macros to type.
 	
-	With the help of \easyformat\ we can do something similar, here we get the same result with:
+	With the help of \pkg{easyformat} we can do something similar, here we get the same result with:
 	\begin{quote}
-		\verb|__Stop!__, you _have_ to wait!|
+		|__Stop!__ You _have_ to wait!|
 	\end{quote}
 	
 	(Why underscores? See: \ref{Why?!})\\
 	
-	And since it is good practice to add abbreviations using ^smallcaps^, \easyformat\ gives you \verb|^smallcaps^|.
+	And since it is good practice to add abbreviations using ^smallcaps^, \pkg{easyformat} gives you |^smallcaps^|.
 	
 	So:
 	\begin{quote}
-		\verb|^nasa^ and ^esa^ are probably the best known space agencies.|
+		|^nasa^ and ^esa^ are probably the best known space agencies.|
 	\end{quote}
 
 	Results in:
@@ -78,28 +81,29 @@
 	\end{quote}
 	
 	\section{Usage, syntax and examples}
-	Like usual you import the package with: \verb|\usepackage{easyformat}|
+	Like usual you import the package with: |\usepackage{easyformat}|
 
-	\easyformat\ makes \verb|_| an active character, however it was already `special' before so you still have to type~\verb|\_| if you want to insert an underscore.
+	\pkg{easyformat} makes |_| an active character, however it was already `special' before so you still have to type~|\_| if you want to insert an underscore.
 	
-	The same can be said of \verb|^|, however since this one is difficult to add in ordinary \LaTeX, the \easyformat\ package gives you \verb|\cir| to get \cir.
+	The same can be said of |^|, however since this one is difficult to add in ordinary \LaTeX, the \pkg{easyformat} package gives you |\cir| to get \cir.
 	
 	\newpage
 
-	As already said, \easyformat\ uses a Markdown-like syntax, so:
+	As already said, \pkg{easyformat} uses a Markdown-like syntax, so:
 	
 	\begin{quote}
-		\verb|_italic,_ __bold,__, ___bolditalic___ and ^smallcaps!^|
+		|_italic,_ __bold,__ ___bolditalic___ and ^smallcaps!^|
 	\end{quote}
 
 	Gives:
 	\begin{quote}
-		_italic,_ __bold,__, ___bolditalic___ and ^smallcaps!^
+		_italic,_ __bold,__ ___bolditalic___ and ^smallcaps!^
 	\end{quote}
 
 	However we can also do more complex stuff, eg.:
 	\begin{quote}
-		\verb|_Lorem __ipsum_ totalem__ ^da^ __givea _zin_ doram__ _zet_tim, liefkan.|
+		|_Lorem __ipsum_ totalem__ ^da^ __givea _zin_ doram__|\\
+		|_zet_tim, liefkan.|
 	\end{quote}
 	
 	Becomes:
@@ -107,83 +111,147 @@
 		_Lorem __ipsum_ totalem__ ^da^ __givea _zin_ doram__ _zet_tim, liefkan.
 	\end{quote}
 
-	Those with a good eye might have noticed that \easyformat\ adds italics correction when needed. Just like \verb|\textit{zet}tim| would have.
+	Those with a good eye might have noticed that \pkg{easyformat} adds italics correction when needed. Just like |\textit{zet}tim| would have.
 	
 	\section{Troubleshooting}
-	\easyformat\ tends to conflict with the loading of other packages, therefore you should probably load \easyformat\ last.
+	\pkg{easyformat} tends to conflict with the loading of other packages, therefore you should probably load \pkg{easyformat} last.
 	
 	\begin{quotation}
 		``For some or other reason I get some weird formatting\dots''
 	\end{quotation}
 
-	It could be a bug---in which case I'd love to hear from you (see \ref{contact})---however, you probably forgot to close your formatting somewhere and because of how \easyformat\ works you can get weird results.
+	It could be a bug---in which case I'd love to hear from you (see \ref{contact})---however, you probably forgot to close your formatting somewhere and because of how \pkg{easyformat} works you can get weird results.
 
-	%__Explanation:__ when you start eg. _italics_ with \verb|_|, \easyformat\ %remembers the shape (the same is true for ^smallcaps^, when you %start __boldface__ it remembers the series) of the font. When you %get out of _italics_, it resets the shape (respectively the series) %to what it was before the starting the formatting.
+	%__Explanation:__ when you start eg. _italics_ with |_|, \pkg{easyformat} remembers the shape (the same is true for ^smallcaps^, when you start __boldface__ it remembers the series) of the font. When you get out of _italics_, it resets the shape (respectively the series) to what it was before the starting the formatting.
 
 
 	%% This is solved in version 2017/04/09 v1.1.0
 	%\subsection{Underscore in subtitles\label{undtitles}}
-	%If you ever try something similar to \verb|\section{__Vectors:__ %$\vec{F}_g$}|: \TeX\ will shout at you. Why? I don't really know. However I %do know how to fix this. If we want to get the previous example we would use:
+	%If you ever try something similar to |\section{__Vectors:__ $\vec{F}_g$}|: \TeX\ will shout at you. Why? I don't really know. However I do know how to fix this. If we want to get the previous example we would use:
 	
 	%\begin{quote}
-	%	\verb|\setundsub|\\
+	%	|\setundsub|\\
 	%	% Yeah there's a glitch were the first is indented slightly more
 	%	% unless there is something before the next lines......
-	%	\hspace*{0pt}\verb|\section{$\textbf{Vectors:} \vec{F}_g$}|\\
-	%	\hspace*{0pt}\verb|\setundact|
+	%	\hspace*{0pt}|\section{$\textbf{Vectors:} \vec{F}_g$}|\\
+	%	\hspace*{0pt}|\setundact|
 	%\end{quote}
 	
-	%This first resets the \verb|_| character so it can only be used as the start of %subscripts; then adds the subtitle and afterwards re-initiates \verb|_| for %__bold__ and _italic_. (Obviously the \easyformat\ syntax does not work %_in_ the subtitle, so you'll have to use the \LaTeX-commands.)
+	%This first resets the |_| character so it can only be used as the start of subscripts; then adds the subtitle and afterwards re-initiates |_| for __bold__ and _italic_. (Obviously the \pkg{easyformat}-syntax does not work _in_ the subtitle, so you'll have to use the \LaTeX-commands.)
 	
+	\newpage
+	
 	\section{Macros}
 	\subsection{Special characters}
-	\noindent\fbox{\texttt{\textbackslash cir}}
-	Insert a circumflex (\cir) character.
+	\begin{function}{\cir}
+		\begin{syntax}
+			\cs{cir}
+		\end{syntax}
+		Insert a circumflex (\cir) character.
+	\end{function}
 
-	\subsection{Fonts}
-	\noindent\fbox{\texttt{\textbackslash nrfamily}}
-	Reverts the fontfamily to the default.\\
+	%%\subsection{Fonts}
+	% Removed in v1.4.0
+	%\begin{function}{\nrfamily}
+	%	\begin{syntax}
+	%		\cs{nrfamily}
+	%	\end{syntax}
+	%	Reverts the font family to the default.
+	%\end{function}
 
-	\noindent\fbox{\texttt{\textbackslash nrshape}}
-	Reverts the fontshape to the default.\\
+	% Removed in v1.4.0
+	%\begin{function}{\nrshape}
+	%	\begin{syntax}
+	%		\cs{nrshape}
+	%	\end{syntax}
+	%	Reverts the font shape to the default.
+	%\end{function}
 
-	\noindent\fbox{\texttt{\textbackslash nrseries}}
-	Reverts the fontseries to the default.\\
+	% Removed in v1.4.0
+	%\begin{function}{\nrseries}
+	%	\begin{syntax}
+	%		\cs{nrseries}
+	%	\end{syntax}
+	%	Reverts the font series to the default.
+	%\end{function}
 
-	\noindent\fbox{\texttt{\textbackslash setffamily\{_fontfamily_\}}}
-	Quickly change the fontfamily.\\
+	% Removed in v1.4.0
+	%\begin{function}{\setffamily}
+	%	\begin{syntax}
+	%		\cs{setffamily} \Arg{font family}
+	%	\end{syntax}
+	%	Quickly change the font family.
+	%\end{function}
 
-	\noindent\fbox{\texttt{\textbackslash setfshape\{_fontshape_\}}}
-	Quickly change the fontshape.\\
+	% Removed in v1.4.0
+	%\begin{function}{\setfshape}
+	%	\begin{syntax}
+	%		\cs{setfshape} \Arg{font shape}
+	%	\end{syntax}
+	%	Quickly change the font shape.
+	%\end{function}
 
-	\noindent\fbox{\texttt{\textbackslash setfseries\{_fontseries_\}}}
-	Quickly change the fontseries.
+	% Removed in v1.4.0
+	%\begin{function}{\setfseries}
+	%	\begin{syntax}
+	%		\cs{setfseries} \Arg{font series}
+	%	\end{syntax}
+	%	Quickly change the font series.
+	%\end{function}
 	
-	\subsection{\easyformat\ syntax}
-	\noindent\fbox{\texttt{\textbackslash enableeasyformat}}
-	Enables the \easyformat\ syntax.\\
+	\subsection{\pkg{easyformat}-syntax}
+	\begin{function}{\enableeasyformat}
+		\begin{syntax}
+			\cs{enableeasyformat}
+		\end{syntax}
+		Enables the \pkg{easyformat}-syntax.
+	\end{function}
 	
-	\noindent\fbox{\texttt{\textbackslash disableeasyformat}}
-	Disables the \easyformat\ syntax.\\
+	\begin{function}{\disableeasyformat}
+		\begin{syntax}
+			\cs{disableeasyformat}
+		\end{syntax}
+		Disables the \pkg{easyformat}-syntax.
+	\end{function}
 	
-	\noindent\fbox{\texttt{\textbackslash setciract}}
-	Sets the catcode of \verb|^| to 13 (active).\\
-	
-	\noindent\fbox{\texttt{\textbackslash setcirsup}}
-	Sets the catcode of \verb|^| to 7 (superscript).\\
-	
-	\noindent\fbox{\texttt{\textbackslash setundact}}
-	Sets the catcode of \verb|_| to 13 (active).\\
-	
-	\noindent\fbox{\texttt{\textbackslash setundsub}}
-	Sets the catcode of \verb|_| to 8 (subscript).
-	
+	% Removed in v1.4.0
+	%\begin{function}{\setciract}
+	%	\begin{syntax}
+	%		\cs{setciract}
+	%	\end{syntax}
+	%	Sets the catcode of |^| to 13 (active).
+	%\end{function}
+
+	% Removed in v1.4.0
+	%\begin{function}{\setcirsup}
+	%	\begin{syntax}
+	%		\cs{setcirsup}
+	%	\end{syntax}
+	%	Sets the catcode of |^| to 7 (superscript).
+	%\end{function}
+
+	% Removed in v1.4.0
+	%\begin{function}{\setundact}
+	%	\begin{syntax}
+	%		\cs{setundact}
+	%	\end{syntax}
+	%	Sets the catcode of |_| to 13 (active).
+	%\end{function}
+
+	% Removed in v1.4.0
+	%\begin{function}{\setundsub}
+	%	\begin{syntax}
+	%		\cs{setundsub}
+	%	\end{syntax}
+	%	Sets the catcode of |_| to 8 (subscript).
+	%\end{function}
+
 	\section{Technical details}
 	\subsection{Why \texttt{\_} and not *?\label{Why?!}}
-	To make * work we would have to make it an active character, however this would break things like \verb|\section*{Art}|. The~\verb|_| is already protected by \TeX\ because of it's meaning in mathmode. However, it has little to no use in textmode. This is why we can use~\verb|_| for this purpose and not~*.
+	To make * work we would have to make it an active character, however this would break things like |\section*{Art}|. The~|_| is already protected by \TeX\ because of it's meaning in mathmode. However, it has little to no use in textmode. This is why we can use~|_| for this purpose and not~*.
 	
 	\subsection{Does this break mathmode?}
-	No it doesn't. It keeps behaving like before in mathmode, it's meaning only changes in textmode. (We first check whether we are in mathmode or not and behave accordingly.)
+	No it doesn't. |_| and |^| keep behaving like before in mathmode, their meaning only changes in textmode. (We first check whether we are in mathmode or not and then behave accordingly.)
 
 	\section{Contact\label{contact}}
 	If you want to make suggestions or have any questions whose answer could be included in a future version of this document, you can email to this address: \url{mailto:evert.provoost at gmail.com}
@@ -192,18 +260,24 @@
 	\section{Changelog}
 	We only include important changes from v1.0.0 onwards, since earlier versions barely worked.
 
+	\subsection*{2017/06/03 v1.4.0}
+	Improved code readability.
+	We now fully use \pkg{expl3}, which eliminates most of the possible future issues with \LaTeX3.
+	Fixed a kerning issue with |\cir| in mathmode.
+	Removed: |\setundact|, |\setundsub|, |\setciract|, |\setcirsup|, |\nrfamily|, |\nrshape|, |\nrseries|, |\setffamily|, |\setfshape| and |\setfseries| as these do not add any value to the package.
+
 	\subsection*{2017/05/28 v1.3.0}
-	Removed forced re-enabling of the \easyformat-syntax at the start of the document.
-	Rewritten to use \texttt{expl3}, this makes the code shorter and a future move to \LaTeX3 easier.
-	Fixed an error that could occur with \verb|\cir|.
-	\easyformat\ now also behaves correctly when a fontpackage is loaded.
+	Removed forced re-enabling of the \pkg{easyformat}-syntax at the start of the document.
+	Rewritten to use \pkg{expl3}, this makes the code shorter and a future move to \LaTeX3 easier.
+	Fixed an error that could occur with |\cir|.
+	\pkg{easyformat} now also behaves correctly when a fontpackage is loaded.
 
 	\subsection*{2017/04/17 v1.2.0}
 	Improved handling of mixed styles.
-	Added \verb|^smallcaps^| for ^smallcaps^.
+	Added |^smallcaps^| for ^smallcaps^.
 
 	\subsection*{2017/04/09 v1.1.0}
-	Made usage of syntax in \verb|\section{}|, and similar macros, possible. Changed the behaviour so it works more like \verb|\emph{}| (this also simplifies the code).
+	Made usage of syntax in |\section{}|, and similar macros, possible. Changed the behaviour so it works more like |\emph{}| (this also simplifies the code).
 
 	\subsection*{2017/04/07 v1.0.0}
 	First stable version.

Modified: trunk/Master/texmf-dist/tex/latex/easyformat/easyformat.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/easyformat/easyformat.sty	2017-06-09 22:29:05 UTC (rev 44542)
+++ trunk/Master/texmf-dist/tex/latex/easyformat/easyformat.sty	2017-06-09 22:29:17 UTC (rev 44543)
@@ -19,152 +19,151 @@
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 
-%% NOTE TO FUTURE: Italics correction works because of \maybe at ic,
-%                  this macro might become \xfss_maybe_ic: in LaTeX3
-%
-%                  In LaTeX3 the `New Font Selection Scheme' is replaced
-%                  by xfss (xfont). Moving will require some research.
+%% NOTE TO THE FUTURE:
+%    In LaTeX3 the `New Font Selection Scheme' is replaced
+%    by XFSS (xfont). Moving will require some research.
 
 
-%% WAIT! This package doesn't use the LaTeX3 naming conventions?!
-%      Yeah, since we make _ an active character, we can't. Sorry.
-
-
 %% Administration...
-\RequirePackage{expl3}[2015/11/11]
+\RequirePackage{expl3}[2016/04/21]
 \ProvidesExplPackage
-	{easyformat}
-	{2017/05/28}
-	{1.3.0}
-	{Easily add boldface, italics and smallcaps.}
+  {easyformat}
+  {2017/06/03}
+  {1.4.0}
+  {Easily add boldface, italics and smallcaps.}
 
 
 %% Public macros
 % Add macros to switch the syntax on or off.
-\cs_new:Npn \setundact {
-	\char_set_catcode_active:N {\_}
-}
+\cs_new:Npn \enableeasyformat
+  {
+    \char_set_catcode_active:N _
+    \char_set_catcode_active:N ^
+  }
 
-\cs_new:Npn \setundsub {
-	\char_set_catcode_math_subscript:N {\_}
-}
+\cs_new:Npn \disableeasyformat
+  {
+    \char_set_catcode_math_subscript:N _
+    \char_set_catcode_math_superscript:N ^
+  }
 
-\cs_new:Npn \setciract {
-	\char_set_catcode_active:N {\^}
-}
+% Add a macro LaTeX should have...
+% Which is protected to fix the double superscript error
+% and able to give correct kerning in mathmode.
+\cs_new_protected:Npn \cir
+  {
+    \mode_if_math:TF
+      { \hat{} }
+      { \c_circumflex_str }
+  }
 
-\cs_new:Npn \setcirsup {
-	\char_set_catcode_math_superscript:N {\^}
-}
 
-\cs_new:Npn \enableeasyformat {
-	\setundact
-	\setciract
-}
+%% Variables
+% Remember the style before changing to italics/boldface/smallcaps.
+\str_new:N \l__prev_shape_str
+\str_set_eq:NN \l__prev_shape_str \shapedefault
 
-\cs_new:Npn \disableeasyformat {
-	\setundsub
-	\setcirsup
-}
+\str_new:N \l__prev_case_str
+% Case is the option used in XFSS, however do note that in
+% LaTeX2e's NFSS, smallcaps is a kind of shape.
+\str_set_eq:NN \l__prev_case_str \shapedefault
 
-% Add macros which change the fontshape, fontseries and fontfamily.
-\cs_new:Npn \setffamily #1 {
-	\fontfamily{#1}
-	\selectfont
-}
+\str_new:N \l__prev_series_str
+\str_set_eq:NN \l__prev_series_str \seriesdefault
 
-\cs_new:Npn \setfshape #1 {
-	\fontshape{#1}
-	\selectfont
-}
 
-\cs_new:Npn \setfseries #1 {
-	\fontseries{#1}
-	\selectfont
-}
+%% Formating handling
+% Add macros which change the font shape and font series.
+\cs_new:Npn \__font_set_shape:n #1
+  {
+    \fontshape {#1}
+    \selectfont
+  }
 
-% Add some macros which do small parts of what \normalfont does.
-% Were needed in v1.1.0 but let's keep them because they are useful :)
-\cs_new:Npn \nrfamily {
-	\setffamily {\familydefault}
-}
+\cs_new:Npn \__font_set_series:n #1
+  {
+    \fontseries {#1}
+    \selectfont
+  }
 
-\cs_new:Npn \nrshape {
-	\setfshape {\shapedefault}
-}
+% Switch italics on or off.
+\cs_new:Npn \__handle_italics:
+  {
+    \str_if_eq:NNTF \f at shape \itdefault
+      {
+        \__font_set_shape:n {\l__prev_shape_str}
+        \str_set_eq:NN \l__prev_shape_str \shapedefault
+        % \maybe at ic adds italics correction if needed.
+        % Probably becomes \xfss_maybe_ic: in LaTeX3.
+        \maybe at ic
+      }
+      {
+        \str_set_eq:NN \l__prev_shape_str \f at shape
+        \itshape
+      }
+  }
 
-\cs_new:Npn \nrseries {
-	\setfseries {\seriesdefault}
-}
+% Switch smallcaps on or off.
+\cs_new:Npn \__handle_smallcaps:
+  {
+    \str_if_eq:NNTF \f at shape \scdefault
+      {
+        \__font_set_shape:n {\l__prev_case_str}
+        \str_set_eq:NN \l__prev_case_str \shapedefault
+      }
+      {
+        \str_set_eq:NN \l__prev_case_str \f at shape
+        \scshape
+      }
+  }
 
-% Add a macro LaTeX should have...
-% The protected to fix the double superscript error.
-\cs_new_protected:Npn \cir {\char_generate:nn {`^} {12}}
+% Switch boldface on or off.
+\cs_new:Npn \__handle_boldface:
+  {
+    \str_if_eq:NNTF \f at series \bfdefault
+      {
+        \__font_set_series:n {\l__prev_series_str}
+        \str_set_eq:NN \l__prev_series_str \seriesdefault
+      }
+      {
+        \str_set_eq:NN \l__prev_series_str \f at series
+        \bfseries
+      }
+  }
 
 
-%% Constants & Variables
-% Yes I could use \sb and \sp but those are dependencies...
-\tl_const:Nx \EFOR at subscript   {\char_generate:nn {`_} {8}}
-\tl_const:Nx \EFOR at superscript {\char_generate:nn {`^} {7}}
+%% Handling the syntax
+% This is where the magic happens (also differentiates between
+% text- and mathmode.)
+% These are protected because they should also work in eg. \section{}
 
-% Remember the style before changing to italics/boldface/smallcaps.
-\str_new:N \EFOR at prev@shape at it
-\str_new:N \EFOR at prev@shape at sc
-\str_new:N \EFOR at prev@series at bf
-\str_set:Nx \EFOR at prev@shape at it  {\shapedefault}  % Used by italics.
-\str_set:Nx \EFOR at prev@shape at sc  {\shapedefault}  % Used by smallcaps.
-\str_set:Nx \EFOR at prev@series at bf {\seriesdefault} % Used by boldface.
+% Syntax handling for the underscore: italics and boldface.
+\cs_new_protected:Npn \__syntax_underscore:
+  {
+    \mode_if_math:TF
+      { \c_math_subscript_token }
+      {
+        \peek_charcode_remove:NTF _
+          % The second underscore is removed when detected.
+          { \__handle_boldface: }
+          { \__handle_italics: }
+      }
+  }
 
+% Syntax handling for the circumflex: smallcaps.
+\cs_new_protected:Npn \__syntax_circumflex:
+  {
+    \mode_if_math:TF
+      { \c_math_superscript_token }
+      { \__handle_smallcaps: }
+  }
 
-%% Formating handling
-% Switch italics on or off.
-\cs_new:Npn \EFOR at handle@italics {
-	\str_if_eq:NNTF \f at shape \itdefault
-	{
-		\setfshape {\EFOR at prev@shape at it}
-		\str_set:Nx \EFOR at prev@shape at it {\shapedefault}
-		% \maybe at ic adds italics correction if needed.
-		% (might stop working in LaTeX3?)
-		\maybe at ic
-	}{
-		\str_set:Nx \EFOR at prev@shape at it {\f at shape}
-		\itshape
-	}
-}
+% Now give the underscore and the circumflex their behaviour.
+\char_set_active_eq:NN _ \__syntax_underscore:
+\char_set_active_eq:NN ^ \__syntax_circumflex:
 
-% Switch smallcaps on or off.
-\cs_new:Npn \EFOR at handle@smallcaps {
-	\str_if_eq:NNTF \f at shape \scdefault
-	{
-		\setfshape {\EFOR at prev@shape at sc}
-		\str_set:Nx \EFOR at prev@shape at sc {\shapedefault}
-	}{
-		\str_set:Nx \EFOR at prev@shape at sc {\f at shape}
-		\scshape
-	}
-}
 
-% Switch boldface on or off.
-\cs_new:Npn \EFOR at handle@boldface {
-	\str_if_eq:NNTF \f at series \bfdefault
-	{
-		\setfseries {\EFOR at prev@series at bf}
-		\str_set:Nx \EFOR at prev@series at bf {\seriesdefault}
-	}{
-		\str_set:Nx \EFOR at prev@series at bf {\f at series}
-		\bfseries
-	}
-}
-
-
-%% Aliases fo expl3
-% Make aliases for some LaTeX3 macros as _ isn't allowed later on.
-\let\Expl at mode@if at math\mode_if_math:TF
-\let\Expl at cs@gset at protected\cs_gset_protected:Npn
-\let\Expl at peek@meaning at remove\peek_meaning_remove:NTF
-
-
-%% Activate the systems!
+%% Activate the systems.
 % First disable the Expl3 syntax as it will only cause trouble.
 \ExplSyntaxOff
 
@@ -171,51 +170,17 @@
 % Now enable the easyformat syntax.
 \enableeasyformat
 
-% Now finally add the new syntax in the document part.
-\AtBeginDocument{
-	% We do not re-enable easyformat here, since that could
-	% cause unexpected behaviour. We tested if this causes errors.
-	
-	% NOTE: for some reason we have to use gset instead of new, no
-	%       idea why though...
-	
-	% This is where the magic happens (also differentiates between
-	% the text and math mode.)
-	% It is protected because it should work in eg. \section{}
+% DONE!!!
 
-	\Expl at cs@gset at protected_{\Expl at mode@if at math
-		{\EFOR at subscript}
-		{\Expl at peek@meaning at remove_
-			% The second underscore is removed when true.
-			{\EFOR at handle@boldface}
-			{\EFOR at handle@italics}%
-		}%
-	}
 
-	\Expl at cs@gset at protected^{\Expl at mode@if at math
-		{\EFOR at superscript}
-		{\EFOR at handle@smallcaps}%
-	}
-}
-
-
-%% Cleanup aka: Disable the systems!
-\AtEndDocument{
-	% Why no \def_\undefined and \def^\undefined?
-	% Because if we use this syntax in eg. \section{},
-	% the macro should still work in the .aux file...
-	\disableeasyformat
-}
-
-
-%% DONE!
-% Unfortunately we can't add a \disableeasyformat here,
-% since that breaks more stuff than it fixes...
-
-
 %% IMPLEMENTATION DETAILS:
 %% Why not \textit/bf/sc\bgroup and \egroup?
 %      Well actualy that was the original solution. However this
 %      doesn't differentiate between ending itallics or ending
-%      boldface. The current solution does and this makes the syntax
-%      more predictable and generally more useful.
\ No newline at end of file
+%      boldface. The current solution does and this makes the
+%      syntax more predictable and generally more useful.
+
+%% Why no ^^typewriter^^?
+%     because this doesn't add much value, in most contexts
+%     where a monospace font is useful there is already
+%     other syntax available.



More information about the tex-live-commits mailing list