summaryrefslogtreecommitdiff
path: root/macros
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2020-09-22 03:01:12 +0000
committerNorbert Preining <norbert@preining.info>2020-09-22 03:01:12 +0000
commit1a37a060977fa92be44dcee0fb99c59e46023afe (patch)
tree2ce5093e943a86635e98fe04177c29b4784e3f2e /macros
parent08c58783476dcc12acae0a0db4fa725a37b7932f (diff)
CTAN sync 202009220301
Diffstat (limited to 'macros')
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-publist/README7
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-publist/biblatex-publist.pdfbin358777 -> 361529 bytes
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-publist/biblatex-publist.tex82
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-publist/publist.bbx107
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-publist/publist.cbx49
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french-test-luatex.pdfbin10294 -> 10575 bytes
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french-test-pdftex.pdfbin15778 -> 45178 bytes
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french-test-xetex.pdfbin9013 -> 9117 bytes
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french.dtx15
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french.ins4
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french.pdfbin122396 -> 323986 bytes
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian-test-luatex.pdfbin10086 -> 10416 bytes
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian-test-pdftex.pdfbin15119 -> 44606 bytes
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian-test-xetex.pdfbin8820 -> 9023 bytes
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian.dtx15
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian.ins4
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian.pdfbin88354 -> 81087 bytes
-rw-r--r--macros/latex/contrib/jmlr/CHANGES12
-rw-r--r--macros/latex/contrib/jmlr/INSTALL8
-rw-r--r--macros/latex/contrib/jmlr/README23
-rw-r--r--macros/latex/contrib/jmlr/jmlr.dtx50
-rw-r--r--macros/latex/contrib/jmlr/jmlr.ins2
-rw-r--r--macros/latex/contrib/jmlr/jmlr.pdfbin631982 -> 632452 bytes
-rwxr-xr-xmacros/latex/contrib/jmlr/makejmlrbook69
-rw-r--r--macros/latex/contrib/jmlr/sample-books/jmlrbook-sample.pdfbin313757 -> 317288 bytes
-rw-r--r--macros/latex/contrib/jmlr/sample-books/proceedings-sample.pdfbin412460 -> 415534 bytes
-rw-r--r--macros/latex/contrib/jmlr/sample-papers/jmlr-sample.pdfbin312766 -> 311674 bytes
-rw-r--r--macros/latex/contrib/jmlr/sample-papers/jmlr-sample.tex13
-rw-r--r--macros/latex/contrib/jmlr/sample-papers/jmlrwcp-sample.pdfbin324349 -> 324230 bytes
-rw-r--r--macros/latex/contrib/jmlr/sample-papers/jmlrwcp-sample.tex4
-rw-r--r--macros/luatex/latex/unitipa/README.txt10
-rw-r--r--macros/luatex/latex/unitipa/unitipa.dtx481
-rw-r--r--macros/luatex/latex/unitipa/unitipa.ins47
-rw-r--r--macros/luatex/latex/unitipa/unitipa.pdfbin0 -> 178561 bytes
34 files changed, 879 insertions, 123 deletions
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-publist/README b/macros/latex/contrib/biblatex-contrib/biblatex-publist/README
index dbf6d12abc..7bee9d60ab 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-publist/README
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-publist/README
@@ -45,6 +45,13 @@ instructions.
== CHANGES ==
+* V. 1.21 (2020-09-21)
+ - Add option "reversenumbering".
+ - Add \citeitem command.
+ - Add \shiftbplnum and \shiftciteitem helper macros for manual
+ adjustment of numbering.
+ - Properly sort "prepublished" pubstate type.
+
* V. 1.20 (2020-09-15)
- Do not output "(with <authors>)" if no plauthor is among the authors.
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-publist/biblatex-publist.pdf b/macros/latex/contrib/biblatex-contrib/biblatex-publist/biblatex-publist.pdf
index 86ae193861..4aa3135ec1 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-publist/biblatex-publist.pdf
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-publist/biblatex-publist.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-publist/biblatex-publist.tex b/macros/latex/contrib/biblatex-contrib/biblatex-publist/biblatex-publist.tex
index bc0c53b5f6..3b04d6a83a 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-publist/biblatex-publist.tex
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-publist/biblatex-publist.tex
@@ -102,12 +102,12 @@
\thanks{Please report issues via \protect\url{https://github.com/jspitz/biblatex-publist}.}%
}
-\date{Version 1.20, 2020/09/15}
+\date{Version 1.21, 2020/09/21}
\maketitle
\begin{abstract}
\noindent The \bpl\ package provides a \bibltx\ style file
-for publication lists, i.\,e.\ a bibliography containing one's own
+for publication lists, i.\,e., a bibliography containing one's own
publications. It draws on \bibltx's \emph{authoryear} style by default
(which can be changed), but provides some extra features needed for publication lists,
such as the omission or highlighting of the own name from\slash in author or editor data.
@@ -119,8 +119,8 @@ The package requires at least version 3.8 of the \bibltx\ package\footnote{For \
\section{Aim of the package}
-The \bpl\ package ships a \emph{biblatex bibliography style file} ({*}.bbx)
-for a specific task: academic publication lists. Such lists, which are a central
+The \bpl\ package provides a \bibltx\ bibliography style for a specific task:
+academic publication lists. Such lists, which are a central
part of the academic CV, contain all or selected publications of a specific
author, usually sorted by genre and year. Even though publication lists are actually
nothing else than (specific) bibliographies, they diverge from those in some
@@ -133,13 +133,38 @@ produce the desired result.
Given the fact that maintaining a publication list is a routine task
in an academian's life, it is surprising how few specified solutions
exist to generate such lists (particularly from Bib\TeX\ data). For
-traditional Bib\TeX, Nicolas Markey provided a specific Bib\TeX\
-style file, \emph{publist.bst}%
-\footnote{\url{http://www.lsv.ens-cachan.fr/~markey/BibTeX/publist/?lang=en};
-see also \cite{ttb}.}, which helps a lot if you want to produce a publication
-list with Bib\TeX. The \bpl\ package is the result of the aim of emulating
-the features of \emph{publist.bst} with \bibltx's means. It partly draws on
-Markey's conceptual ideas. Bug reports, comments and ideas are welcome.
+classic Bib\TeX, Nicolas Markey provides (off CTAN) a Bib\TeX\ style file
+dedicated to that task, \emph{publist.bst}%
+\footnote{See \url{http://www.lsv.fr/~markey/BibTeX/publist/publist.bst}
+ for the style file, \url{http://www.lsv.fr/~markey/BibTeX/publist/doc.ps.gz}
+ for documentation; see also \cite{ttb}.}.
+The \bpl\ package started off as the attempt to emulate the features of
+\emph{publist.bst} with \bibltx's means; it thus partly draws on
+its conceptual ideas. Meanwhile, however, it has significantly exceeded
+that initial goal and provides many more features than \emph{publist.bst}.
+
+The list of features includes:
+
+\begin{itemize}
+ \setlength\itemsep{0pt}
+ \item Omit or hide selected author names, with a specific indication of co-authors in the former case
+ \item Filter publications of specific authors from heterogeneous bibliography databases
+ \item Date-centric sorting (as typical for publication lists)
+ \item Number items in ascending or descending order, globally or sectional
+ \item Highlight year of publication
+ \item Indicate year of publication (sets) in the margin
+ \item Clickable titles, linking to the URL, DOI, or a web catalog
+ \item List reviews of specific titles
+ \item Adjustable base bibliography style
+\end{itemize}
+%
+Many features have been suggested by users of the package.
+If you miss a specific feature, feel free to suggest it via
+\url{https://github.com/jspitz/biblatex-publist/issues}.
+
+Note that \bpl\ relies on rather advanced features of \bibltx\ for some of its own features.
+These are only available with the \texttt{biber} backend of \bibltx. Hence \bpl\ requires
+the use of \texttt{biber} as well -- the \texttt{bibtex} backend won't work!
\section{Usage}
@@ -181,6 +206,11 @@ Note that \jcsmacro{plauthorname} expects the name constituents as they are reco
database (special characters will be expanded). The option \joption{plauthorfirstinit} (see next section),
however, allows you to pass only an initial character instead of a first name.
+If you want to refer to an item number, use \jcsmacro*{citeitem}\jmacro{\{<key>\}} within your publication list.
+This will print the item number in square brackets (like the \jfcsmacro{cite} command in numeric citation styles),
+but as opposed to normal \jfcsmacro{cite} it also considers all numbering tweaks you make via the \bpl\ options.
+
+\condbr{4}
\subsection{Additional options}\label{sec:addopts}
@@ -232,9 +262,15 @@ If you prefer the numbering to start from 1 at each section instead, set this op
If you do not want to have any numbers at all, set this option to \joption{false}.
+
+\item [{\joption{reversenumbering{[}=true|false{]}}}] default: \emph{false}.
+
+If this option is \joption{true}, the entries will be numbered in descending order, starting from the total
+number of entries back to 1. Also works with \joption{plnumbered=reset}.
+
\item [{\joption{plauthorfirstinit{[}=true|false{]}}}] default: \emph{false}.
-If you set this option to true, you can (and are supposed to) pass only an initial character as first name value of
+If you set this option to \joption{true}, you can (and are supposed to) pass only an initial character as first name value of
\jcsmacro{plauthorname} (e.\,g., \jcsmacro{plauthorname[J]\{Doe\}} or \jcsmacro{plauthorname[J][van]\{Doe\}}).
In consequence, \bpl\ will consider all entries of the specified given name (and prefix, if specified)
whose prename starts with the specified character. This allows you to deal with databases that record entries of your work
@@ -336,6 +372,8 @@ The omission indicator, \jcsmacro*{plnameomission}, can be redefined. The defaul
\newcommand*\plnameomission{\bibellipsis\addcomma\addspace}
\end{lstlisting}
+\condbr{4}
+
\section{Customization}
\subsection{Auxiliary macros and lengths}\label{sec:auxmacros}
@@ -364,6 +402,13 @@ The indendation of the bibliographic entries (lines > 1) can be adjusted by sett
This might be needed for long bibliographies (> 99 entries) in order to adjust to the extra
space the item number needs.
+If you need to adjust the numbering of items manually, you can do so with the macro \jcsmacro*{shiftbplnum}.
+It takes a positive or negative integer value that determines how much and in which direction it is shifted
+(e.\,g., \verb|\shiftpblnum{2}| or \verb|\shiftbplnum{-1}|). This can be used repeatedly, anywhere, and applies
+to all subsequent items.
+For the numbering output by \jfcsmacro{citeitem}, analogous shifting can be done by
+\jcsmacro*{shiftciteitem}.
+
\subsection{Using a different base style}\label{sec:basestyle}
@@ -502,8 +547,7 @@ Then a typical file would look like example~\ref{example} (p.~\pageref{example})
\end{document}
\end{lstlisting}
-
-
+%
If you want to add other people's reviews of your work, add a section
such as the following:
\begin{lstlisting}[caption={Adding foreign reviews},
@@ -617,6 +661,16 @@ or
\section{Revision Log}
\begin{description}
+
+ \item [{V. 1.21 (2020-09-21):}]~
+ \begin{itemize}
+ \item Add option \jfoption{reversenumbering}. See sec.~\ref{sec:addopts}.
+ \item Add \jcsmacro{citeitem} command. See sec.~\ref{sec:standard-usage}.
+ \item Add \jcsmacro{shiftbplnum} and \jcsmacro{shiftciteitem} helper macros
+ for manual adjustment of numbering.
+ See sec.~\ref{sec:auxmacros}.
+ \item Properly sort \jfoption{prepublished} pubstate type.
+ \end{itemize}
\item [{V. 1.20 (2020-09-15):}]~
\begin{itemize}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-publist/publist.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-publist/publist.bbx
index 365cf8de42..59c81cfb22 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-publist/publist.bbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-publist/publist.bbx
@@ -25,8 +25,8 @@
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\def\bpl@version{1.20}
-\def\bpl@rdate{2020/09/15}
+\def\bpl@version{1.21}
+\def\bpl@rdate{2020/09/21}
\ProvidesFile{publist.bbx}[\bpl@rdate\space v.\bpl@version\space
biblatex bibliography style (JSP)]
@@ -92,7 +92,8 @@
\ifstrequal{#1}{false}{\togglefalse{firstinit}}{\toggletrue{firstinit}}
}
-\newif\if@bplnumbered\@bplnumberedtrue
+\newif\if@bpl@numbered\@bpl@numberedtrue
+\newif\if@bpl@numberreset\@bpl@numberresetfalse
\DeclareBibliographyOption{plnumbered}[true]{%
\ifstrequal{#1}{false}{% 1. "false"
\defbibenvironment{bibliography}
@@ -106,6 +107,7 @@
{\endlist}
{\item}}{% else: 2. "reset"
\ifstrequal{#1}{reset}{%
+ \@bpl@numberresettrue%
\defbibenvironment{bibliography}
{\addtolength{\labelnumberwidth}{\extralabelnumberwidth}%
\list
@@ -180,6 +182,11 @@
}%
}
+\newif\if@bpl@reversenum\@bpl@reversenumfalse
+\DeclareBibliographyOption{reversenumbering}[true]{%
+ \ifstrequal{#1}{true}{\@bpl@reversenumtrue}{\@bpl@reversenumfalse}
+}
+
% Check if users have defined different base styles
% If not, use authoryear.
\newif\ifbpl@standardbasestyle\bpl@standardbasestylefalse
@@ -387,9 +394,12 @@
%
% Deal with numbering (resume numbers in refsections)
%
-\csnumgdef{bbx@itemtotal}{0}
-\csnumgdef{bbx@currentitem}{0}
-\csnumgdef{bbx@saverefsection}{0}
+\csnumgdef{bpl@itemtotal}{0}
+\csnumgdef{bpl@currentitem}{0}
+\csnumgdef{bpl@saverefsection}{0}
+\csnumgdef{bpl@currentitem}{0}
+\csnumgdef{bpl@all@entrycount}{0}
+\csnumgdef{bpl@comp@entrycount:0}{0}
\newbool{newsection}
\preto\blx@refsection{\global\setbool{newsection}{true}}
@@ -416,32 +426,85 @@
\renewcommand*{\makelabel}[1]{\hss##1}%
}%
{\endlist
- \ifnumgreater{\c@refsection}{\bbx@saverefsection}%
- {\csnumgdef{bbx@itemtotal}{\csuse{bbx@itemtotal}+\csuse{bbx@currentitem}}}{}%
- \csnumgdef{bbx@saverefsection}{\c@refsection}%
+ \ifnumgreater{\c@refsection}{\bpl@saverefsection}%
+ {\if@bpl@reversenum
+ \csnumgdef{bpl@itemtotal}{\csuse{bpl@itemtotal}}%
+ \else
+ \csnumgdef{bpl@itemtotal}{\csuse{bpl@itemtotal}+\csuse{bpl@currentitem}}%
+ \fi}{}%
+ \csnumgdef{bpl@saverefsection}{\c@refsection}%
}
{\item}
\DeclareFieldFormat{labelnumber}{%
\ifbool{newsection}{%
% Fix start counter value
- \csnumgdef{bbx@itemtotal}{\csuse{bbx@itemtotal}-#1+1}%
+ \mkbibsecstart{#1}%
\global\setbool{newsection}{false}%
}{}%
\mkbibdesc{#1}%
- \csnumgdef{bbx@currentitem}{#1}%
+ \csnumgdef{bpl@currentitem}{#1}%
}
-% Print labelnumber as actual number, plus item total
\newrobustcmd{\mkbibdesc}[1]{%
- \number\numexpr\csuse{bbx@itemtotal}+#1\relax%
+ % Print labelnumber as actual number, plus item total
+ \number\numexpr\csuse{bpl@itemtotal}+#1\relax%
+}%
+
+\newrobustcmd{\mkbibsecstart}[1]{%
+ \csnumgdef{bpl@itemtotal}{\csuse{bpl@itemtotal}-#1+1}%
}
-% Way to manual shift the numbering (undocumented)
-\newcommand*\decreasebbxnumbering[1]{%
- \csnumgdef{bbx@itemtotal}{\csuse{bbx@itemtotal}-#1}%
+% Way to manually shift the numbering
+\csnumgdef{bpl@shift@itemtotal}{0}
+\newcommand*\shiftbplnum[1]{%
+ \csnumgdef{bpl@shift@itemtotal}{#1}%
}
+%
+% Reverse numbering
+% Inspired by moewew's approach at
+% https://tex.stackexchange.com/a/563328/19291
+%
+\AtEndOfPackage{%
+\newcounter{prevrefsection}%
+\if@bpl@reversenum
+ % Count total number of entries in each refsection
+ \AtDataInput{%
+ \ifcategory{filtered}{%
+ \csnumgdef{bpl@entrycount:\therefsection}{%
+ \csuse{bpl@entrycount:\therefsection}+1%
+ }%
+ \setcounter{prevrefsection}{\therefsection}%
+ \addtocounter{prevrefsection}{-1}%
+ \csnumgdef{bpl@comp@entrycount:\therefsection}{%
+ \csuse{bpl@comp@entrycount:\theprevrefsection}+\csuse{bpl@entrycount:\therefsection}%
+ }%
+ \csnumgdef{bpl@all@entrycount}{%
+ \csuse{bpl@all@entrycount}+1%
+ }%
+ }{}%
+ }%
+ \renewrobustcmd{\mkbibdesc}[1]{%
+ % Print the labelnumber as the total number of entries in the
+ % current refsection, minus the actual labelnumber, plus one
+ \number\numexpr\csuse{bpl@entrycount:\therefsection}+\csuse{bpl@itemtotal}-#1+1\relax%
+ }%
+ \renewrobustcmd{\mkbibsecstart}[1]{%
+ \setcounter{prevrefsection}{\therefsection}%
+ \addtocounter{prevrefsection}{-1}%
+ \if@bpl@numberreset
+ \csnumgdef{bpl@itemtotal}{#1-1+\csuse{bpl@shift@itemtotal}}%
+ \else
+ \csnumgdef{bpl@itemtotal}{\csuse{bpl@all@entrycount}%
+ -\csuse{bpl@comp@entrycount:\theprevrefsection}%
+ -\csuse{bpl@entrycount:\therefsection}-#1+1%
+ +\csuse{bpl@shift@itemtotal}}%
+ \fi%
+ }%
+\fi
+}%
+
%
% New environment for (foreign) reviews
@@ -1281,21 +1344,25 @@
\step[fieldset=sortyear, origfieldval]
}
\map{
- \step[fieldsource=pubstate, match=\regexp{forthcoming}, final]
+ \step[fieldsource=pubstate, match=\regexp{prepublished}, final]
\step[fieldset=sortyear, fieldvalue={2222}]
}
\map{
- \step[fieldsource=pubstate, match=\regexp{inpress}, final]
+ \step[fieldsource=pubstate, match=\regexp{forthcoming}, final]
\step[fieldset=sortyear, fieldvalue={3333}]
}
\map{
- \step[fieldsource=pubstate, match=\regexp{submitted}, final]
+ \step[fieldsource=pubstate, match=\regexp{inpress}, final]
\step[fieldset=sortyear, fieldvalue={4444}]
}
\map{
- \step[fieldsource=pubstate, match=\regexp{inpreparation}, final]
+ \step[fieldsource=pubstate, match=\regexp{submitted}, final]
\step[fieldset=sortyear, fieldvalue={5555}]
}
+ \map{
+ \step[fieldsource=pubstate, match=\regexp{inpreparation}, final]
+ \step[fieldset=sortyear, fieldvalue={6666}]
+ }
}
}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-publist/publist.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-publist/publist.cbx
index 7a856b1111..f0e9cd47c2 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-publist/publist.cbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-publist/publist.cbx
@@ -26,12 +26,57 @@
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\def\bpl@version{1.20}
-\def\bpl@rdate{2020/09/15}
+\def\bpl@version{1.21}
+\def\bpl@rdate{2020/09/21}
\ProvidesFile{publist.cbx}[\bpl@rdate\space v.\bpl@version\space
biblatex citation style (JSP)]
\RequireCitationStyle{numeric}
+\DeclareCiteCommand{\citeitem}
+ {\defcounter{maxnames}{999}%
+ \boolfalse{citetracker}%
+ \boolfalse{pagetracker}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{bpl:cite:extern}}
+ {\multicitedelim}
+ {\usebibmacro{postnote}}
+
+\newbibmacro*{bpl:cite:extern}{%
+ \printtext[bibhyperref]{%
+ \printfield{labelprefix}%
+ \usebibmacro{bpl:cite:labelnumber}%
+ \ifbool{bbx:subentry}
+ {\printfield{entrysetcount}}
+ {}}}
+
+\newbibmacro*{bpl:cite:labelnumber}{%
+ \printtext[labelnumberwidth]{\mkrefdesc{\thefield{labelnumber}}}%
+}
+
+% Manual way to adjust numbering
+\csdef{bpl@secstartshift}{0}
+\newcommand*\shiftciteitem[1]{\csdef{bpl@secstartshift}{#1}}
+
+% Print labelnumber as actual number, plus item total
+% and probably a manual shift value
+\newrobustcmd{\mkrefdesc}[1]{%
+ \number\numexpr#1+\csuse{bpl@itemtotal}+\csuse{bpl@secstartshift}\relax%
+}
+
+\providebool{@bpl@reversenum}
+
+\AtEndOfPackage{%
+\if@bpl@reversenum
+ \renewrobustcmd{\mkrefdesc}[1]{%
+ % Print the labelnumber as the total number of entries in the
+ % current refsection, minus the actual labelnumber, plus one
+ \number\numexpr\csuse{bpl@itemtotal}-#1+1%
+ +\csuse{bpl@secstartshift}\relax%
+ }%
+\fi%
+}
+
+%%
\endinput
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french-test-luatex.pdf b/macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french-test-luatex.pdf
index 2e34ee8a36..501c15c626 100644
--- a/macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french-test-luatex.pdf
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french-test-luatex.pdf
Binary files differ
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french-test-pdftex.pdf b/macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french-test-pdftex.pdf
index 5f9ee14cce..d19bcb059e 100644
--- a/macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french-test-pdftex.pdf
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french-test-pdftex.pdf
Binary files differ
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french-test-xetex.pdf b/macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french-test-xetex.pdf
index 8b9342ccd9..d36e732d28 100644
--- a/macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french-test-xetex.pdf
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french-test-xetex.pdf
Binary files differ
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french.dtx b/macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french.dtx
index ffcce39e15..fe0a0ab63e 100644
--- a/macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french.dtx
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french.dtx
@@ -19,8 +19,8 @@
%\fi
% \iffalse
% Doc-Source file to use with LaTeX2e
-% Copyright (C) 2015 Nicola Talbot, all rights reserved.
-% Copyright (C) 2017 Paul A. Patience <pap@papatience.com>, all rights reserved.
+% Copyright (C) 2015-2020 Nicola Talbot, all rights reserved.
+% Copyright (C) 2017-2020 Paul A. Patience <pap@papatience.com>, all rights reserved.
% \fi
% \iffalse
%<*driver>
@@ -62,7 +62,7 @@
%\title{French Module for datetime2 Package}
%\author{Nicola L. C. Talbot (inactive) \\
% Paul A. Patience\thanks{E-mail: pap@papatience.com}}
-%\date{2017-04-08 (v1.02)}
+%\date{2020-09-21 (v1.03)}
%\maketitle
%
%\begin{abstract}
@@ -98,7 +98,7 @@
%\changes{1.0}{2015-03-27}{Initial release}
% Identify module
% \begin{macrocode}
-\ProvidesDateTimeModule{french-utf8}[2017/04/08 v1.02]
+\ProvidesDateTimeModule{french-utf8}[2020/09/21 v1.03]
% \end{macrocode}
%\begin{macro}{\DTMfrenchordinal}
% \begin{macrocode}
@@ -428,7 +428,7 @@
%\changes{1.0}{2015-03-27}{Initial release}
% Identify module
% \begin{macrocode}
-\ProvidesDateTimeModule{french-ascii}[2017/04/08 v1.02]
+\ProvidesDateTimeModule{french-ascii}[2020/09/21 v1.03]
% \end{macrocode}
%
%\begin{macro}{\DTMfrenchordinal}
@@ -755,7 +755,7 @@
%
% Identify Module
% \begin{macrocode}
-\ProvidesDateTimeModule{french}[2017/04/08 v1.02]
+\ProvidesDateTimeModule{french}[2020/09/21 v1.03]
% \end{macrocode}
% Need to find out if XeTeX or LuaTeX are being used.
% \begin{macrocode}
@@ -1112,6 +1112,7 @@
% Redefine \cs{datefrench} (or \cs{date}\meta{dialect}) to prevent
% \sty{babel} from resetting \cs{today}. (For this to work,
% \sty{babel} must already have been loaded if it's required.)
+%\changes{1.03}{2020-09-21}{removed spurious space}
% \begin{macrocode}
\ifcsundef{date\CurrentTrackedDialect}
{%
@@ -1132,7 +1133,7 @@
\DTMifcaseregional
{}% do nothing
{\DTMsetstyle{french}}%
- {\DTMsetstyle{french-numeric}}
+ {\DTMsetstyle{french-numeric}}%
}%
}%
% \end{macrocode}
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french.ins b/macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french.ins
index d685a6f8f2..2a6dba5cea 100644
--- a/macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french.ins
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french.ins
@@ -3,8 +3,8 @@
\preamble
datetime2-french.dtx
- Copyright 2015 Nicola Talbot
- Copyright 2017 Paul A. Patience <pap@papatience.com>
+ Copyright 2015-2020 Nicola Talbot (inactive)
+ Copyright 2017-2020 Paul A. Patience <pap@papatience.com>
This work may be distributed and/or modified under the
conditions of the LaTeX Project Public License, either version 1.3
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french.pdf b/macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french.pdf
index 713f7c01d7..b34f439259 100644
--- a/macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french.pdf
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french.pdf
Binary files differ
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian-test-luatex.pdf b/macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian-test-luatex.pdf
index 30d6a8a874..4f16b6ca8f 100644
--- a/macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian-test-luatex.pdf
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian-test-luatex.pdf
Binary files differ
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian-test-pdftex.pdf b/macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian-test-pdftex.pdf
index c064957ed4..f60fe1a839 100644
--- a/macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian-test-pdftex.pdf
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian-test-pdftex.pdf
Binary files differ
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian-test-xetex.pdf b/macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian-test-xetex.pdf
index 57f7fb8867..3499e64fa1 100644
--- a/macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian-test-xetex.pdf
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian-test-xetex.pdf
Binary files differ
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian.dtx b/macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian.dtx
index a923e58338..d133c5a623 100644
--- a/macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian.dtx
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian.dtx
@@ -19,8 +19,8 @@
%\fi
% \iffalse
% Doc-Source file to use with LaTeX2e
-% Copyright (C) 2015 Nicola Talbot, all rights reserved.
-% Copyright (C) 2017 Paul A. Patience <pap@papatience.com>, all rights reserved.
+% Copyright (C) 2015-2020 Nicola Talbot, all rights reserved.
+% Copyright (C) 2017-2020 Paul A. Patience <pap@papatience.com>, all rights reserved.
% \fi
% \iffalse
%<*driver>
@@ -63,7 +63,7 @@
%\title{Romanian Module for datetime2 Package}
%\author{Nicola L. C. Talbot (inactive) \\
% Paul A. Patience\thanks{E-mail: pap@papatience.com}}
-%\date{2017-04-08 (v1.01)}
+%\date{2020-09-21 (v1.02)}
%\maketitle
%
%\begin{abstract}
@@ -99,7 +99,7 @@
%\changes{1.0}{2015-03-31}{Initial release}
% Identify module
% \begin{macrocode}
-\ProvidesDateTimeModule{romanian-utf8}[2017/04/08 v1.01]
+\ProvidesDateTimeModule{romanian-utf8}[2020/09/21 v1.02]
% \end{macrocode}
%\begin{macro}{\DTMromanianordinal}
% \begin{macrocode}
@@ -361,7 +361,7 @@
%\changes{1.0}{2015-03-31}{Initial release}
% Identify module
% \begin{macrocode}
-\ProvidesDateTimeModule{romanian-ascii}[2017/04/08 v1.01]
+\ProvidesDateTimeModule{romanian-ascii}[2020/09/21 v1.02]
% \end{macrocode}
%
%\begin{macro}{\DTMromanianordinal}
@@ -619,7 +619,7 @@
%
% Identify Module
% \begin{macrocode}
-\ProvidesDateTimeModule{romanian}[2017/04/08 v1.01]
+\ProvidesDateTimeModule{romanian}[2020/09/21 v1.02]
% \end{macrocode}
% Need to find out if XeTeX or LuaTeX are being used.
% \begin{macrocode}
@@ -980,6 +980,7 @@
% Redefine \cs{dateromanian} (or \cs{date}\meta{dialect}) to prevent
% \sty{babel} from resetting \cs{today}. (For this to work,
% \sty{babel} must already have been loaded if it's required.)
+%\changes{1.02}{2020-09-21}{removed spurious space}
% \begin{macrocode}
\ifcsundef{date\CurrentTrackedDialect}
{%
@@ -1000,7 +1001,7 @@
\DTMifcaseregional
{}% do nothing
{\DTMsetstyle{romanian}}%
- {\DTMsetstyle{romanian-numeric}}
+ {\DTMsetstyle{romanian-numeric}}%
}%
}%
% \end{macrocode}
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian.ins b/macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian.ins
index 38bf1d54a7..26664517e2 100644
--- a/macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian.ins
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian.ins
@@ -3,8 +3,8 @@
\preamble
datetime2-romanian.dtx
- Copyright 2015 Nicola Talbot
- Copyright 2017 Paul A. Patience <pap@papatience.com>
+ Copyright 2015-2020 Nicola Talbot (inactive)
+ Copyright 2017-2020 Paul A. Patience <pap@papatience.com>
This work may be distributed and/or modified under the
conditions of the LaTeX Project Public License, either version 1.3
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian.pdf b/macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian.pdf
index f332484c1d..0bb25a2202 100644
--- a/macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian.pdf
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian.pdf
Binary files differ
diff --git a/macros/latex/contrib/jmlr/CHANGES b/macros/latex/contrib/jmlr/CHANGES
index 7bb3e80b95..998cc1ce7a 100644
--- a/macros/latex/contrib/jmlr/CHANGES
+++ b/macros/latex/contrib/jmlr/CHANGES
@@ -1,3 +1,15 @@
+v1.28 (2020-09-21):
+
+ * jmlr.cls:
+
+ Bug fixes:
+
+ - fixed twoside option (which should be the default)
+
+ - \thanks now uses mpfootnote instead of footnote counter
+ with matching \footnotemark and \footnotetext optional
+ arguments.
+
v1.27 (2020-03-26):
* jmlrutils.sty:
diff --git a/macros/latex/contrib/jmlr/INSTALL b/macros/latex/contrib/jmlr/INSTALL
index 0d207a9b8a..4dbbc8f15b 100644
--- a/macros/latex/contrib/jmlr/INSTALL
+++ b/macros/latex/contrib/jmlr/INSTALL
@@ -1,5 +1,9 @@
INSTALLATION
+*Installation is best performed using your TeX package manager.*
+These are instructions for manual installation if for some reason a
+package manager can't be used.
+
If you have downloaded the jmlr bundle using the TeX Directory
Structure (TDS), that is you have downloaded the archive
jmlr.tds.zip containing doc, tex and source directories, you need to
@@ -13,10 +17,6 @@ jmlr.ins
You need to follow the "Installing from DTX and INS" instructions
below.
-For further information on installing LaTeX packages see:
-
-http://www.tex.ac.uk/cgi-bin/texfaq2html?label=installthings
-
INSTALLING FROM TDS
===================
diff --git a/macros/latex/contrib/jmlr/README b/macros/latex/contrib/jmlr/README
index ef18e9e40c..e9a52cdccf 100644
--- a/macros/latex/contrib/jmlr/README
+++ b/macros/latex/contrib/jmlr/README
@@ -1,4 +1,4 @@
-LaTeX Class : jmlr bundle v1.27 (2020-03-26)
+LaTeX Class : jmlr bundle v1.28 (2020-09-21)
Author : Nicola L. C. Talbot
dickimaw-books.com/contact
@@ -15,9 +15,9 @@ DESCRIPTION
This bundle provides:
- * jmlr class
- * jmlrbook class
- * jmlrutils package
+ * jmlr class (article authors)
+ * jmlrutils package (supplementary package automatically loaded by jmlr.cls)
+ * jmlrbook class (for production editors)
The jmlr class is a LaTeX class for articles for the Journal of
Machine Learning Research (JMLR) or the Proceedings of Machine
@@ -37,11 +37,20 @@ nonhyperlinked book for printing. Production editors can use the
makejmlrbookgui application
(http://www.dickimaw-books.com/software/makejmlrbookgui/) to
generate the proceedings. The makejmlrbook Perl script is deprecated
-and may be removed in future releases.
+and will be removed in future releases.
+
+**
+ jmlrbook.cls is quite fragile as it has to patch third party
+ internal code in order to make combine.cls work with hyperref.sty
+ There's no guarantee that it will work with newer versions of
+ combine.cls or hyperref.sty or new LaTeX kernel releases.
+**
INSTALLATION
-See INSTALL file for installation instructions.
+Installation is best performed using your TeX package manager.
+See INSTALL file for manual installation instructions if you are unable to
+use the package manager.
REQUIREMENTS
@@ -67,7 +76,7 @@ jmlrbook class requirements:
xkeyval
combnat
setspace
- fink
+ currfile or fink
RELATED SOFTWARE:
diff --git a/macros/latex/contrib/jmlr/jmlr.dtx b/macros/latex/contrib/jmlr/jmlr.dtx
index 577b06010d..14215e52a9 100644
--- a/macros/latex/contrib/jmlr/jmlr.dtx
+++ b/macros/latex/contrib/jmlr/jmlr.dtx
@@ -1,14 +1,14 @@
%\iffalse
% jmlr.dtx generated using makedtx version 1.2 (c) Nicola Talbot
% Command line args:
+% -section "chapter"
% -doc "jmlr-manual.tex"
% -author "Nicola Talbot"
-% -section "chapter"
% -src "jmlrutils.sty\Z=>jmlrutils.sty"
% -src "jmlr.cls\Z=>jmlr.cls"
% -src "jmlrbook.cls\Z=>jmlrbook.cls"
% jmlr
-% Created on 2020/3/26 11:30
+% Created on 2020/9/21 16:27
%\fi
%\iffalse
%<*package>
@@ -52,7 +52,7 @@ Research (PMLR)},
\doxitem{Option}{option}{package options}
-\CheckSum{5259}
+\CheckSum{5265}
\newcommand*{\appopt}[1]{\texttt{-{}-#1}}
@@ -70,7 +70,7 @@ Research (PMLR)},
% \author{Nicola L. C. Talbot\\[10pt]
%\url{http://www.dickimaw-books.com/}}
%
-% \date{2020-03-26 (version 1.27)}
+% \date{2020-09-21 (version 1.28)}
% \maketitle
%\tableofcontents
%
@@ -142,14 +142,15 @@ Research (PMLR)},
%\href{http://www.dickimaw-books.com/software/makejmlrbookgui/manual/troubleshooting.html}{troubleshooting
%section}.
%
-%There is also a Perl script called \app{makejmlrbook}, which is
-%distributed with the \clsfmt{jmlr} and \clsfmt{jmlrbook} bundle,
-%however it is now deprecated and has been superseded by
+%The Perl script \app{makejmlrbook} is now deprecated and will be
+%removed in future releases. It has been superseded by
%\app{makejmlrbookgui}. Note that PMLR (formerly JMLR W\&CP) has new
%format guidelines that are followed by new versions of
%\app{makejmlrbookgui} but not by the Perl script \app{makejmlrbook},
-%so that script is no longer documented or supported and may be
-%dropped from future versions of this bundle.
+%so that script is no longer documented or supported.
+%The PMLR submission requirements for production editors are now much simpler
+%and can be followed without the assistance of \cls{jmlrbook} or
+%\app{makejmlrbookgui}.
%
%\section{Required Packages}
%
@@ -1152,8 +1153,8 @@ Research (PMLR)},
%\href{http://www.dickimaw-books.com/latex/novices}{\LaTeX\ for Complete Novices}.
%
%There are also forums, mailing lists and newsgroups. For example,
-%\TeX\ on StackExchange (\url{http://tex.stackexchange.com/}),
-%the \LaTeX\ Community (\url{http://www.latex-community.org/}),
+%\TeX\ on StackExchange (\url{https://tex.stackexchange.com/}),
+%the \LaTeX\ Community (\url{https://latex.org/forum/}),
%the \texttt{texhax} mailing list
%(\url{http://tug.org/mailman/listinfo/texhax}) and
%\texttt{comp.text.tex} (archives available at
@@ -1753,7 +1754,7 @@ Research (PMLR)},
%Non-class dependent code. This package is automatically loaded by
%\cls{jmlr} but may be used with other classes.
% \begin{macrocode}
-\ProvidesPackage{jmlrutils}[2020/03/26 v1.27 (NLCT)]
+\ProvidesPackage{jmlrutils}[2020/09/21 v1.28 (NLCT)]
% \end{macrocode}
% Package options:
%\begin{macro}{\ifjmlrutilsmaths}
@@ -2753,7 +2754,7 @@ Research (PMLR)},
% Declare class and required TeX format:
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesClass{jmlr}[2020/03/26 v1.27 (NLCT) Journal of Machine Learning Research]
+\ProvidesClass{jmlr}[2020/09/21 v1.28 (NLCT) Journal of Machine Learning Research]
% \end{macrocode}
%\changes{1.10}{2011-01-05}{hyperref now loaded by jmlr instead of
%jmlrbook}
@@ -2976,6 +2977,13 @@ Research (PMLR)},
% \begin{macrocode}
\ProcessOptionsX
% \end{macrocode}
+% If two-sided, pass that to \cls{article} as well:
+%\changes{1.28}{2020-09-21}{pass twoside to article.cls}
+% \begin{macrocode}
+\if@twoside
+ \PassOptionsToClass{twoside}{article}
+\fi
+% \end{macrocode}
% Load \cls{article} class.
%\changes{1.10}{2011-01-05}{passed \cs{pt@size} when loading article
%class}
@@ -3197,11 +3205,13 @@ Research (PMLR)},
%\changes{1.10}{2011-01-05}{Modified definition of \cs{thanks}}
%Added optional argument to \cs{footnotetext} as per
%\url{http://tex.stackexchange.com/questions/229295}.
+%\changes{1.28}{2020-09-21}{switched to using mpfootnote to avoid clashing
+%with document footnotes}
% \begin{macrocode}
\renewcommand*{\thanks}[1]{%
- \footnotemark
- \protected@xdef\@thanks{\@thanks
- \protect\footnotetext[\arabic{footnote}]{#1}}%
+ \refstepcounter{mpfootnote}%
+ \footnotemark[\number\value{mpfootnote}]%
+ \xappto\@thanks{\noexpand\footnotetext[\number\value{mpfootnote}]{#1}}%
}
% \end{macrocode}
%\end{macro}
@@ -4879,7 +4889,7 @@ Keywords:} \ignorespaces}%
% \end{macrocode}
% Declare class:
% \begin{macrocode}
-\ProvidesClass{jmlrbook}[2020/03/26 v1.27 (NLCT) JMLR Book Style]
+\ProvidesClass{jmlrbook}[2020/09/21 v1.28 (NLCT) JMLR Book Style]
% \end{macrocode}
% Need \sty{xkeyval} package to have key=value class options
% \begin{macrocode}
@@ -5057,14 +5067,16 @@ Keywords:} \ignorespaces}%
% \end{macrocode}
%\begin{option}{oneside}
%\changes{1.22}{2015/04/11}{new}
+%\changes{1.28}{2020-09-21}{pass option to jmlr.cls}
% \begin{macrocode}
-\DeclareOptionX{oneside}{\@twosidefalse \@mparswitchfalse}
+\DeclareOptionX{oneside}{\PassOptionsToClass{\CurrentOption}{jmlr}}
% \end{macrocode}
%\end{option}
%\begin{option}{twoside}
%\changes{1.22}{2015/04/11}{new}
+%\changes{1.28}{2020-09-21}{pass option to jmlr.cls}
% \begin{macrocode}
-\DeclareOptionX{twoside}{\@twosidetrue \@mparswitchtrue}
+\DeclareOptionX{twoside}{\PassOptionsToClass{\CurrentOption}{jmlr}}
% \end{macrocode}
%\end{option}
%
diff --git a/macros/latex/contrib/jmlr/jmlr.ins b/macros/latex/contrib/jmlr/jmlr.ins
index c73ba3101c..108c83e582 100644
--- a/macros/latex/contrib/jmlr/jmlr.ins
+++ b/macros/latex/contrib/jmlr/jmlr.ins
@@ -1,4 +1,4 @@
-% jmlr.ins generated using makedtx version 1.2 2020/3/26 11:30
+% jmlr.ins generated using makedtx version 1.2 2020/9/21 16:27
\input docstrip
\preamble
diff --git a/macros/latex/contrib/jmlr/jmlr.pdf b/macros/latex/contrib/jmlr/jmlr.pdf
index 9c8887da03..98ad5b636e 100644
--- a/macros/latex/contrib/jmlr/jmlr.pdf
+++ b/macros/latex/contrib/jmlr/jmlr.pdf
Binary files differ
diff --git a/macros/latex/contrib/jmlr/makejmlrbook b/macros/latex/contrib/jmlr/makejmlrbook
index 252ce3e549..544943fc75 100755
--- a/macros/latex/contrib/jmlr/makejmlrbook
+++ b/macros/latex/contrib/jmlr/makejmlrbook
@@ -2,17 +2,23 @@
# File : makejmlrbook
# Author : Nicola L C Talbot
# Date : 22nd March 2010
-# Last Modified : 30 May 2012
-# Version : 0.32
+# Last Modified : 21st September 2020
+# Version : 0.33
# Description : Given the name of a document using the
# jmlrbook class file, this script runs
# pdflatex (and possibly bibtex) on the
# imported articles and the main document.
-# http://theoval.cmp.uea.ac.uk/~nlct/
+# http://www.dickimaw-books.com/
#
# This file is distributed as part of the jmlr LaTeX bundle.
#
-# Copyright (c) 2006 Nicola L.C. Talbot
+# *****
+# This script is now obsolete and will be removed in later
+# distributions. Use MakeJmlrBookGUI instead:
+# https://www.dickimaw-books.com/software/makejmlrbookgui
+# *****
+#
+# Copyright (c) 2006-2020 Nicola L.C. Talbot
# This work may be distributed and/or modified under the
# conditions of the LaTeX Project Public License, either version 1.3
# of this license or any later version.
@@ -31,7 +37,7 @@ use File::Copy;
use Cwd;
use strict;
-my $version = "0.32 (2012-05-28)";
+my $version = "0.33 (2020-09-21)";
my $eol = "\n";
my $dd = '/';
@@ -60,6 +66,15 @@ my $extractpreface = 0; # v0.3 added
# without executing them)
my $execute = 1; # v0.31 added
+my $appname = basename($0);
+
+warn <<__END_OBSOLETE_WARN;
+Warning: $appname is now obsolete and will be removed in later
+distributions. Use MakeJmlrBookGUI instead:
+https://www.dickimaw-books.com/software/makejmlrbookgui
+
+__END_OBSOLETE_WARN
+
unless(&GetOptions(
"online!" => \$online,
"print!" => \$print,
@@ -80,8 +95,6 @@ unless(&GetOptions(
die "Use --help for help\n";
}
-my $appname = basename($0);
-
if ($showhelp)
{
die "$appname version $version Copyright (c) 2010 Nicola L C Talbot\n",
@@ -179,7 +192,7 @@ foreach my $import (@imports)
my $pages = $pagerefs{$label}->{'start'}.'--'
. $pagerefs{$label}->{'end'};
- $import->{'author'}=~s/\\articlepagesref\s*{$label}/$pages/;
+ $import->{'author'}=~s/\\articlepagesref\s*\{$label\}/$pages/;
}
if ($html)
@@ -390,7 +403,7 @@ foreach my $import (@imports)
# This doesn't handle complicated cases, such as
# the author using \abstract ... \endabstract
# or commenting out the abstract with conditionals
- if (/^([^%]*)\\end{abstract}/)
+ if (/^([^%]*)\\end\{abstract\}/)
{
$text .= $&;
last;
@@ -435,7 +448,7 @@ foreach my $import (@imports)
# v0.31 modified \footnote to set the footnote text as in-line
# parenthesis.
- $text=~s/^([^%\n\r\f]*)\\begin{document}/
+ $text=~s/^([^%\n\r\f]*)\\begin\{document\}/
$prebegindoc$&$begindoc
\\HCode{<div id="content">}
\\renewcommand{\\footnote}[2][]{ (\#2)}%$eol
@@ -585,7 +598,7 @@ if ($html and $execute)
s/^([^%]*)\\documentclass\s*/$&\[html\]/;
}
- s/^([^%]*)\\begin{document}/
+ s/^([^%]*)\\begin\{document\}/
\\hypersetup{draft}$eol$&\\HCode{<div id="content">}/x;
if (/^([^%]*)\\maketitle/)
@@ -601,7 +614,7 @@ if ($html and $execute)
# Find the book logo
if ($preamble
- =~/\\logo\s*(?:\[[^\]]*\])?\s*{(%\s*\n)?\\includegraphics\s*(\[[^\]]*\])?{([^}]*)}}/m)
+ =~/\\logo\s*(?:\[[^\]]*\])?\s*\{(%\s*\n)?\\includegraphics\s*(\[[^\]]*\])?\{([^}]*)\}\}/m)
{
my $texpath = $3;
my $orgtexpath = $texpath;
@@ -644,13 +657,13 @@ if ($html and $execute)
if ($logourl)
{
$preamble=~s/
- \\includegraphics(\[[^\]]*\])?{$orgtexpath}/
+ \\includegraphics(\[[^\]]*\])?\{$orgtexpath\}/
\\href{$logourl}{\\includegraphics${1}{$img$ext}}/mgx;
}
else
{
$preamble=~s/
- \\includegraphics(\[[^\]]*\])?{$orgtexpath}/
+ \\includegraphics(\[[^\]]*\])?\{$orgtexpath\}/
\\includegraphics${1}{$img$ext}/mgx;
}
}
@@ -697,17 +710,17 @@ if ($html and $execute)
while (<TOC>)
{
- if (/^\\tocpart\s*{(.*)}\s*$/)
+ if (/^\\tocpart\s*\{(.*)\}\s*$/)
{
print OUTFD "\\begin{center}\\bfseries $1\\end{center}$eol";
}
- elsif (/\\contentsline\s*{papertitle}{(.*)}{[^{}]*}{[^{}]*}\s*$/)
+ elsif (/\\contentsline\s*\{papertitle\}\{(.*)\}\{[^{}]*\}\{[^{}]*\}\s*$/)
{
# v0.3 Changed by Olivier Chapelle to use description
# environment instead of paragraph break
print OUTFD "\\begin{description}\\item[\\normalfont $1]$eol";
}
- elsif (/\\contentsline\s*{chapterauthor}{(.*)}{[^{}]*}{[^{}]*}\s*$/)
+ elsif (/\\contentsline\s*\{chapterauthor\}\{(.*)\}\{[^{}]*\}\{[^{}]*\}\s*$/)
{
my $details = $1;
$details=~s/([^;]*);/\\textbf{\\emph{$1};}/;
@@ -716,7 +729,7 @@ if ($html and $execute)
my $pages = $pagerefs{$label}->{'start'}.'--'
. $pagerefs{$label}->{'end'};
- $details=~s/\\articlepagesref\s*{$label}/$pages/;
+ $details=~s/\\articlepagesref\s*\{$label\}/$pages/;
# v0.3 Changed by Olivier Chapelle to use newline instead of par
print OUTFD "$details\\newline$eol";
@@ -1110,7 +1123,7 @@ sub parsemainaux{
{
$main_bibdata = 1;
}
- elsif (/\\\@jmlr\@import{(.*)}{(.*)}{(.*)}/)
+ elsif (/\\\@jmlr\@import\{(.*)\}\{(.*)\}\{(.*)\}/)
{
my $import =
{
@@ -1123,18 +1136,18 @@ sub parsemainaux{
push @imports, $import;
}
- elsif (/\\contentsline\s*{chapterauthor}{(.*)}{}{}}\s*$/
+ elsif (/\\contentsline\s*\{chapterauthor\}\{(.*)\}\{\}\{\}}\s*$/
and $#imports > -1)
{
$imports[$#imports]->{'author'} = $1;
}
- elsif (/^\\newlabel\s*{([^}]*)jmlrstart}{{([^}]*)}{([^}]*)}/)
+ elsif (/^\\newlabel\s*\{([^\}]*)jmlrstart\}\{\{([^\}]*)\}\{([^\}]*)\}/)
{
my $label = $1;
$pagerefs{$label}->{'start'} = $3;
}
- elsif (/^\\newlabel\s*{([^}]*)jmlrend}{{([^}]*)}{([^}]*)}/)
+ elsif (/^\\newlabel\s*\{([^\}]*)jmlrend\}\{\{([^\}]*)\}\{([^\}]*)\}/)
{
my $label = $1;
@@ -1142,21 +1155,21 @@ sub parsemainaux{
}
elsif ($extractpreface) # v0.3 new
{
- if (/^\\\@prefacestart{([^}]*)}{(\d*)}/)
+ if (/^\\\@prefacestart\{([^\}]*)\}\{(\d*)\}/)
{
$preface_data->{'Start'} = $1;
$preface_data->{'StartArabic'} = $2;
}
- elsif (/^\\\@prefaceend{([^}]*)}/)
+ elsif (/^\\\@prefaceend\{([^\}]*)\}/)
{
$preface_data->{'End'} = $1;
}
- elsif (/^\\\@prefacefile{([^}]*)}{([^}]*)}/)
+ elsif (/^\\\@prefacefile\{([^\}]*)\}\{([^\}]*)\}/)
{
$preface_data->{'File'} = $1;
$preface_data->{'OutFile'} = $2;
}
- elsif (/^\\\@prefaceeditor{(.*)}/)
+ elsif (/^\\\@prefaceeditor\{(.*)\}/)
{
my $name = $1;
$name=~s/\\\\.*//;
@@ -1280,7 +1293,7 @@ sub createprefacefile{
# This is fairly primitive and works best when the begin
# and end of the environment are on their own line.
- if (/\\begin{preface}/)
+ if (/\\begin\{preface\}/)
{
print PREFOUT;
$scanning = 1;
@@ -1289,7 +1302,7 @@ sub createprefacefile{
{
print PREFOUT;
- last if /\\end{preface}/;
+ last if /\\end\{preface\}/;
}
}
diff --git a/macros/latex/contrib/jmlr/sample-books/jmlrbook-sample.pdf b/macros/latex/contrib/jmlr/sample-books/jmlrbook-sample.pdf
index 6b5311f08e..6bfdf86a8f 100644
--- a/macros/latex/contrib/jmlr/sample-books/jmlrbook-sample.pdf
+++ b/macros/latex/contrib/jmlr/sample-books/jmlrbook-sample.pdf
Binary files differ
diff --git a/macros/latex/contrib/jmlr/sample-books/proceedings-sample.pdf b/macros/latex/contrib/jmlr/sample-books/proceedings-sample.pdf
index 32fc16df55..b9a74dc749 100644
--- a/macros/latex/contrib/jmlr/sample-books/proceedings-sample.pdf
+++ b/macros/latex/contrib/jmlr/sample-books/proceedings-sample.pdf
Binary files differ
diff --git a/macros/latex/contrib/jmlr/sample-papers/jmlr-sample.pdf b/macros/latex/contrib/jmlr/sample-papers/jmlr-sample.pdf
index e13b6a6c93..31d153a4b6 100644
--- a/macros/latex/contrib/jmlr/sample-papers/jmlr-sample.pdf
+++ b/macros/latex/contrib/jmlr/sample-papers/jmlr-sample.pdf
Binary files differ
diff --git a/macros/latex/contrib/jmlr/sample-papers/jmlr-sample.tex b/macros/latex/contrib/jmlr/sample-papers/jmlr-sample.tex
index b45425a183..4dda4f434e 100644
--- a/macros/latex/contrib/jmlr/sample-papers/jmlr-sample.tex
+++ b/macros/latex/contrib/jmlr/sample-papers/jmlr-sample.tex
@@ -1,8 +1,8 @@
% use the "wcp" class option for workshop and conference
% proceedings
%\documentclass[gray]{jmlr} % test grayscale version
- %\documentclass[tablecaption=bottom]{jmlr}% journal article
- \documentclass[tablecaption=bottom,wcp]{jmlr} % W&CP article
+ \documentclass[tablecaption=bottom]{jmlr}% journal article
+ %\documentclass[tablecaption=bottom,wcp]{jmlr} % W&CP article
% The following packages will be automatically loaded:
% amsmath, amssymb, natbib, graphicx, url, algorithm2e
@@ -120,10 +120,7 @@ commands, such as \verb|\rm|, and obsolete packages, such as
\textsf{epsfig}.\footnote{See
\url{http://www.ctan.org/pkg/l2tabu}} Some packages that are known
to cause problems for the production editing process are checked for
-by the \textsf{jmlr} class and will generate an error. (If you want
-to know more about the production editing process, have a look at
-the video tutorials for the production editors at
-\url{http://www.dickimaw-books.com/software/makejmlrbookgui/videos/}.)
+by the \textsf{jmlr} class and will generate an error.
Please also ensure that your document will compile with PDF\LaTeX.
If you have an error message that's puzzling you, first check for it
@@ -132,8 +129,8 @@ at the UK TUG FAQ
that doesn't help, create a minimal working example (see
\url{https://www.dickimaw-books.com/latex/minexample/}) and post
to somewhere like \TeX\ on StackExchange
-(\url{http://tex.stackexchange.com/}) or the \LaTeX\ Community Forum
-(\url{http://www.latex-community.org/forum/}).
+(\url{https://tex.stackexchange.com/}) or the \LaTeX\ Community Forum
+(\url{https://latex.org/forum/}).
\begin{note}
This is an numbered theorem-like environment that was defined in
diff --git a/macros/latex/contrib/jmlr/sample-papers/jmlrwcp-sample.pdf b/macros/latex/contrib/jmlr/sample-papers/jmlrwcp-sample.pdf
index dcd47fc349..8600d8176e 100644
--- a/macros/latex/contrib/jmlr/sample-papers/jmlrwcp-sample.pdf
+++ b/macros/latex/contrib/jmlr/sample-papers/jmlrwcp-sample.pdf
Binary files differ
diff --git a/macros/latex/contrib/jmlr/sample-papers/jmlrwcp-sample.tex b/macros/latex/contrib/jmlr/sample-papers/jmlrwcp-sample.tex
index c30a2f40cc..470e2d9215 100644
--- a/macros/latex/contrib/jmlr/sample-papers/jmlrwcp-sample.tex
+++ b/macros/latex/contrib/jmlr/sample-papers/jmlrwcp-sample.tex
@@ -106,8 +106,8 @@ at the UK TUG FAQ
that doesn't help, create a minimal working example (see
\url{https://www.dickimaw-books.com/latex/minexample}) and post
to somewhere like TeX on StackExchange
-(\url{http://tex.stackexchange.com/}) or the LaTeX Community Forum
-(\url{http://www.latex-community.org/forum/}).
+(\url{https://tex.stackexchange.com/}) or the LaTeX Community Forum
+(\url{https://latex.org/forum/}).
\begin{note}
This is an numbered theorem-like environment that was defined in
diff --git a/macros/luatex/latex/unitipa/README.txt b/macros/luatex/latex/unitipa/README.txt
new file mode 100644
index 0000000000..b68d0b4fdb
--- /dev/null
+++ b/macros/luatex/latex/unitipa/README.txt
@@ -0,0 +1,10 @@
+--------------------------------------------------------------------------
+Package: unitipa
+Author: Niranjan
+Version: 0.1 (21 September, 2020)
+Description: TIPA typefaces with Unicode characters.
+Repository: https://gitlab.com/niranjanvikastambe/unitipa
+Bug tracker: https://gitlab.com/niranjanvikastambe/unitipa/-/issues
+License: The LaTeX Project Public License v1.3c or later.
+--------------------------------------------------------------------------
+
diff --git a/macros/luatex/latex/unitipa/unitipa.dtx b/macros/luatex/latex/unitipa/unitipa.dtx
new file mode 100644
index 0000000000..4437f73253
--- /dev/null
+++ b/macros/luatex/latex/unitipa/unitipa.dtx
@@ -0,0 +1,481 @@
+% \iffalse meta-comment
+%
+% File: unitipa.dtx
+% ---------------------------------------------------------------------------
+% Package: unitipa
+% Author: Niranjan
+% Description: TIPA typefaces with Unicode characters.
+% Repository: https://gitlab.com/niranjanvikastambe/unitipa
+% Bug tracker: https://gitlab.com/niranjanvikastambe/unitipa/-/issues
+% License: The LaTeX Project Public License v1.3c or later.
+% ---------------------------------------------------------------------------
+% This work may be distributed and/or modified under the conditions of the
+% LaTeX Project Public License, either version 1.3c of this license or (at
+% your option) any later version.
+%
+% The latest version of this license is in
+%
+% http://www.latex-project.org/lppl.txt.
+%
+% This work has the LPPL maintenance status `maintained'.
+%
+% The Current Maintainer of this work is Niranjan.
+%
+% This work consists of the files unitipa.dtx
+% unitipa.ins
+% and the derived file unitipa.sty.
+% \fi
+% \iffalse
+%<*internal>
+\iffalse
+%</internal>
+%<*readme>
+--------------------------------------------------------------------------
+Package: unitipa
+Author: Niranjan
+Version: 0.1 (21 September, 2020)
+Description: TIPA typefaces with Unicode characters.
+Repository: https://gitlab.com/niranjanvikastambe/unitipa
+Bug tracker: https://gitlab.com/niranjanvikastambe/unitipa/-/issues
+License: The LaTeX Project Public License v1.3c or later.
+--------------------------------------------------------------------------
+%</readme>
+%<*internal>
+\fi
+%</internal>
+%<*driver|package>
+\def\unitipaPackageName{unitipa}
+\def\unitipaPackageVersion{0.1}
+\def\unitipaPackageDate{2020/21/09}
+\def\unitipaPackageDescription{TIPA typefaces with Unicode characters.}
+%</driver|package>
+%<*driver>
+\documentclass{l3doc}
+\usepackage{tipa}
+\usepackage{graphicx}
+\usepackage{unitipa}
+\usepackage{hyperref}
+\usepackage{xcolor}
+\hypersetup{
+colorlinks,
+linkcolor=red!60!black,
+citecolor=green!60!black,
+urlcolor=blue!60!black
+}
+\usepackage{fontawesome5}
+\begin{document}
+ \DocInput{\unitipaPackageName.dtx}
+\end{document}
+%</driver>
+% \fi
+% \title{The \pkg{\unitipaPackageName} package}
+% \author{Niranjan}
+% \date^^A
+% {^^A
+% Version \unitipaPackageVersion\ --- \unitipaPackageDate\\[1ex]^^A
+% {\small\faIcon{link}\quad\url{https://ctan.org/pkg/unitipa}}\\^^A
+% {\small\faIcon{gitlab}\quad\url{https://gitlab.com/niranjanvikastambe/unitipa}}^^A
+% }
+% \maketitle
+
+% This package converts Unicode characters into TIPA commands, which gives us \pkg{tipa} typefaces, without actually learning the \pkg{tipa} commands in much details. This package needs Lua\LaTeX\ as the compiler for correctly typesetting the IPA diacritics. TIPA was designed to match with the Computer Modern design, no other IPA font matches with traditional \LaTeX\ font. This package is helpful for getting the beautiful \pkg{tipa} shapes with Unicode characters. This package assumes that the user knows how to type IPA Unicode. Following is the list of symbols that \textit{cannot} be used with the traditional \LaTeX\ font. Every other symbol in the IPA chart is present in the current \LaTeX\ font.
+% \begin{description}
+% \item[Plosives] ʈ ɖ ɟ ɢ ʔ
+% \item[Nasals] ɱ ɳ ɴ
+% \item[Trills] ʙ ʀ
+% \item[Taps or flaps] ⱱ ɾ ɽ
+% \item[Fricatives] ɸ β θ ʃ ʒ ʂ ʐ ɣ χ ʁ ʕ ɦ
+% \item[Lateral fricatives] ɬ ɮ
+% \item[Approximants] ʋ ɹ ɻ ɰ
+% \item[Lateral approximants] ɭ ʎ ʟ
+% \item[Affricates] ʧ ʤ ʦ ʣ
+% \item[Close vowels] ɨ ʉ ɯ
+% \item[Near-close vowels] ɪ ʏ ʊ
+% \item[Close-mid vowels] ɵ ɤ
+% \item[Open-mid vowels] ɛ ɜ ɞ ʌ ɔ
+% \item[Near-open vowels] ɐ ɶ ɒ
+% \item[Clicks] ʘ ǀ ǃ ǂ ǁ
+% \item[Voiced Implosives] ɓ ɗ ʄ ɠ ʛ
+% \item[Ejective] ʼ
+% \item[Suprasegmentals] ˈ ˌ ː ˑ
+% \item[Other symbols] ʍ ɥ ʜ ʢ ʡ ɕ ʑ ɺ ɧ
+% \item[Dependent diacritics] k̥ e̬ o̹ o̜ u̟ l̠ e̽ m̩ a̯ b̤ t̼ l̴ ɛ̝ e̞ e̘ e̙ t̪ t̺ n̻ p̚
+% \item[Independent diacritics] kʰ gʱ kʷ cʲ kˠ pˤ
+% \item[Tie bars] t͜s k͡p
+% \item[Tones] ꜜ ꜛ a᷄ e᷅ e᷈
+% \end{description}
+% \begin{documentation}
+% \section{Package options}
+% \begin{function}{nodiacritics}
+% If you are very sure that you don't need any IPA diacritics in your document, you can load the package with this option. If this option is loaded, package can be compiled with other compilers too, but no IPA diacritic will be printed.
+% \end{function}
+% \begin{function}{ipafont}
+% IPA character [ⱱ] is not available in \pkg{tipa}, but for the convenience of users, this character is coded with Doulos SIL as it seemed to me the closest match to \pkg{tipa} typeface. If you don't have this font, please install package \pkg{\href{https://ctan.org/pkg/doulossil}{doulossil}} or download the font from \href{https://software.sil.org/doulos/}{here}. If users want to change the font used for this character, they can simply add the font name as the value to this option.
+% \begin{syntax}
+% ipafont=\meta{font name}
+% \end{syntax}
+% \end{function}
+% \end{documentation}
+% \begin{implementation}
+% \section{Implementation}
+% \begin{macrocode}
+%<@@=unitipa>
+%<*package>
+% \end{macrocode}
+% \begin{macrocode}
+\ProvidesPackage{unitipa}[2020/21/09 v0.1
+TIPA typefaces with unicode characters]
+\RequirePackage{tipa}
+% \end{macrocode}
+% Provide package with its basic information and load package \pkg{tipa}.
+% \begin{macrocode}
+\RequirePackage{graphicx}
+% \end{macrocode}
+% Package \pkg{graphicx} is needed for printing [ɞ] correctly. See line no.\ 295.
+% \begin{macrocode}
+\RequirePackage{newunicodechar}
+\RequirePackage{fontspec}
+\RequirePackage{pgfkeys}
+\pgfkeys{
+ unitipa/.is family, unitipa/.cd,
+ ipafont/.code={\setfontfamily{\ipa}{#1}},
+ ipafont=DoulosSIL,
+}
+\DeclareTextFontCommand{\ipatext}{\ipa}
+\def\unitipa@ipafont#1{\pgfkeys{unitipa/.cd,#1}}
+\DeclareOption*{\expandafter\unitipa@ipafont\expandafter{\CurrentOption}}
+% \end{macrocode}
+% Option \verb|ipafont| provided using \pkg{pgfkeys}.
+% \begin{macrocode}
+\newif\ifnodiacritics
+\nodiacriticsfalse
+\DeclareOption{nodiacritics}{\nodiacriticstrue}
+\ProcessOptions\relax
+\ifnodiacritics
+\relax
+\else
+\RequirePackage{iftex}
+\RequirePackage{luacode}
+\RequireLuaTeX
+%% Dependent diacritic marks
+\begin{luacode}
+ function voiceless ( s )
+ s = unicode.utf8.gsub ( s , '(%a)̥', '\\textsubring{%1}' )
+ return s
+ end
+\end{luacode}
+\directlua{luatexbase.add_to_callback("process_input_buffer",
+ voiceless, "voiceless")}
+\begin{luacode}
+ function voiced ( s )
+ s = unicode.utf8.gsub ( s , '(%a)̬', '\\textsubwedge{%1}' )
+ return s
+ end
+\end{luacode}
+\directlua{luatexbase.add_to_callback("process_input_buffer",
+ voiced, "voiced")}
+\begin{luacode}
+ function morerounded ( s )
+ s = unicode.utf8.gsub ( s , '(%a)̹', '\\textsubrhalfring{%1}' )
+ return s
+ end
+\end{luacode}
+\directlua{luatexbase.add_to_callback("process_input_buffer",
+ morerounded, "morerounded")}
+\begin{luacode}
+ function lessrounded ( s )
+ s = unicode.utf8.gsub ( s , '(%a)̜', '\\textsublhalfring{%1}' )
+ return s
+ end
+\end{luacode}
+\directlua{luatexbase.add_to_callback("process_input_buffer",
+ lessrounded, "lessrounded")}
+\begin{luacode}
+ function advanced ( s )
+ s = unicode.utf8.gsub ( s , '(%a)̟', '\\textsubplus{%1}' )
+ return s
+ end
+\end{luacode}
+\directlua{luatexbase.add_to_callback("process_input_buffer",
+ advanced, "advanced")}
+\begin{luacode}
+ function retracted ( s )
+ s = unicode.utf8.gsub ( s , '(%a)̠', '\\textsubbar{%1}' )
+ return s
+ end
+\end{luacode}
+\directlua{luatexbase.add_to_callback("process_input_buffer",
+ retracted, "retracted")}
+\begin{luacode}
+ function midcentralized ( s )
+ s = unicode.utf8.gsub ( s , '(%a)̽', '\\textovercross{%1}' )
+ return s
+ end
+\end{luacode}
+\directlua{luatexbase.add_to_callback("process_input_buffer",
+ midcentralized, "midcentralized")}
+\begin{luacode}
+ function syllabic ( s )
+ s = unicode.utf8.gsub ( s , '(%a)̩', '\\textsyllabic{%1}' )
+ return s
+ end
+\end{luacode}
+\directlua{luatexbase.add_to_callback("process_input_buffer",
+ syllabic, "syllabic")}
+\begin{luacode}
+ function nonsyllabic ( s )
+ s = unicode.utf8.gsub ( s , '(%a)̯', '\\textsubarch{%1}' )
+ return s
+ end
+\end{luacode}
+\directlua{luatexbase.add_to_callback("process_input_buffer",
+ nonsyllabic, "nonsyllabic")}
+\begin{luacode}
+ function breathyvoiced ( s )
+ s = unicode.utf8.gsub ( s , '(%a)̤', '\\textsubumlaut{%1}' )
+ return s
+ end
+\end{luacode}
+\directlua{luatexbase.add_to_callback("process_input_buffer",
+ breathyvoiced, "breathyvoiced")}
+\begin{luacode}
+ function linguolabial ( s )
+ s = unicode.utf8.gsub ( s , '(%a)̼', '\\textseagull{%1}' )
+ return s
+ end
+\end{luacode}
+\directlua{luatexbase.add_to_callback("process_input_buffer",
+ linguolabial, "linguolabial")}
+\begin{luacode}
+ function velarized ( s )
+ s = unicode.utf8.gsub ( s , '(%a)̴', '\\textsuperimposetilde{%1}' )
+ return s
+ end
+\end{luacode}
+\directlua{luatexbase.add_to_callback("process_input_buffer",
+ velarized, "velarized")}
+\begin{luacode}
+ function raised ( s )
+ s = unicode.utf8.gsub ( s , '(%a)̝', '\\textraising{%1}' )
+ return s
+ end
+\end{luacode}
+\directlua{luatexbase.add_to_callback("process_input_buffer",
+ raised, "raised")}
+\begin{luacode}
+ function lowered ( s )
+ s = unicode.utf8.gsub ( s , '(%a)̞', '\\textlowering{%1}' )
+ return s
+ end
+\end{luacode}
+\directlua{luatexbase.add_to_callback("process_input_buffer",
+ lowered, "lowered")}
+\begin{luacode}
+ function advancedtr ( s )
+ s = unicode.utf8.gsub ( s , '(%a)̘', '\\textadvancing{%1}' )
+ return s
+ end
+\end{luacode}
+\directlua{luatexbase.add_to_callback("process_input_buffer",
+ advancedtr, "advancedtr")}
+\begin{luacode}
+ function retractedtr ( s )
+ s = unicode.utf8.gsub ( s , '(%a)̙', '\\textretracting{%1}' )
+ return s
+ end
+\end{luacode}
+\directlua{luatexbase.add_to_callback("process_input_buffer",
+ retractedtr, "retractedtr")}
+\begin{luacode}
+ function dental ( s )
+ s = unicode.utf8.gsub ( s , '(%a)̪', '\\textsubbridge{%1}' )
+ return s
+ end
+\end{luacode}
+\directlua{luatexbase.add_to_callback("process_input_buffer",
+ dental, "dental")}
+\begin{luacode}
+ function apical ( s )
+ s = unicode.utf8.gsub ( s , '(%a)̺', '\\textinvsubbridge{%1}' )
+ return s
+ end
+\end{luacode}
+\directlua{luatexbase.add_to_callback("process_input_buffer",
+ apical, "apical")}
+\begin{luacode}
+ function laminal ( s )
+ s = unicode.utf8.gsub ( s , '(%a)̻', '\\textsubsquare{%1}' )
+ return s
+ end
+\end{luacode}
+\directlua{luatexbase.add_to_callback("process_input_buffer",
+ laminal, "laminal")}
+\begin{luacode}
+ function unaudible ( s )
+ s = unicode.utf8.gsub ( s , '(%a)̚', '%1\\textcorner' )
+ return s
+ end
+\end{luacode}
+\directlua{luatexbase.add_to_callback("process_input_buffer",
+ unaudible, "unaudible")}
+%% Tie bars
+\begin{luacode}
+ function tiebarup ( s )
+ s = unicode.utf8.gsub ( s , '(%a)͡(%a)', '\\texttoptiebar{%1%2}' )
+ return s
+ end
+\end{luacode}
+\directlua{luatexbase.add_to_callback("process_input_buffer",
+ tiebarup, "tiebarup")}
+\begin{luacode}
+ function tiebardown ( s )
+ s = unicode.utf8.gsub ( s , '(%a)͜(%a)', '\\textbottomtiebar{%1%2}' )
+ return s
+ end
+\end{luacode}
+\directlua{luatexbase.add_to_callback("process_input_buffer",
+ tiebardown, "tiebardown")}
+\begin{luacode}
+ function risefall ( s )
+ s = unicode.utf8.gsub ( s , '(%a)᷈', '\\textrisefall{%1}' )
+ return s
+ end
+\end{luacode}
+\directlua{luatexbase.add_to_callback("process_input_buffer",
+ risefall, "risefall")}
+\begin{luacode}
+ function rising ( s )
+ s = unicode.utf8.gsub ( s , '(%a)᷄', '\\texthighrise{%1}' )
+ return s
+ end
+\end{luacode}
+\directlua{luatexbase.add_to_callback("process_input_buffer",
+ rising, "rising")}
+\begin{luacode}
+ function falling ( s )
+ s = unicode.utf8.gsub ( s , '(%a)᷅', '\\textlowrise{%1}' )
+ return s
+ end
+\end{luacode}
+\directlua{luatexbase.add_to_callback("process_input_buffer",
+ falling, "falling")}
+\fi
+% \end{macrocode}
+% Option \verb|nodiacritics| provided for using the package without Lua\LaTeX. Enabling this option won't print any diacritics. Help from Samcarter and Mico Loretan on different platforms\footnote{Samcarter's \href{https://topanswers.xyz/tex?q=1332\#a1577}{answer} on TopAnswer \& Mico Loretan's \href{https://tex.stackexchange.com/a/563447/174620}{answer} on TeX.SE.} gave a right direction to this code.
+% \begin{macrocode}
+%% Pulmonic Consonants
+%% Plosives
+\newunicodechar{ʈ}{\textrtailt}
+\newunicodechar{ɖ}{\textrtaild}
+\newunicodechar{ɟ}{\textbardotlessj}
+\newunicodechar{ɢ}{\textscg}
+\newunicodechar{ʔ}{\textglotstop}
+%% Nasals
+\newunicodechar{ɱ}{\textltailm}
+\newunicodechar{ɳ}{\textrtailn}
+\newunicodechar{ɴ}{\textscn}
+%% Trills
+\newunicodechar{ʙ}{\textscb}
+\newunicodechar{ʀ}{\textscr}
+%% Taps or flaps
+\newunicodechar{ⱱ}{\ipatext{ⱱ}} %% Sorry for the bad typography!
+\newunicodechar{ɾ}{\textfishhookr}
+\newunicodechar{ɽ}{\textrtailr}
+%% Fricatives
+\newunicodechar{ɸ}{\textphi}
+\newunicodechar{β}{\textbeta}
+\newunicodechar{θ}{\texttheta}
+\newunicodechar{ʃ}{\textesh}
+\newunicodechar{ʒ}{\textyogh}
+\newunicodechar{ʂ}{\textrtails}
+\newunicodechar{ʐ}{\textrtailz}
+\newunicodechar{ʝ}{\textctj}
+\newunicodechar{ɣ}{\textgamma}
+\newunicodechar{χ}{\textchi}
+\newunicodechar{ʁ}{\textinvscr}
+\newunicodechar{ʕ}{\textrevglotstop}
+\newunicodechar{ɦ}{\texthth}
+%% Lateral fricatives
+\newunicodechar{ɬ}{\textbeltl}
+\newunicodechar{ɮ}{\textlyoghlig}
+%% Approximants
+\newunicodechar{ʋ}{\textscriptv}
+\newunicodechar{ɹ}{\textturnr}
+\newunicodechar{ɻ}{\textturnrrtail}
+\newunicodechar{ɰ}{\textturnmrleg}
+%% Lateral approximants
+\newunicodechar{ɭ}{\textrtaill}
+\newunicodechar{ʎ}{\textturny}
+\newunicodechar{ʟ}{\textscl}
+%% Affricates
+\newunicodechar{ʧ}{\textteshlig}
+\newunicodechar{ʤ}{\textdyoghlig}
+\newunicodechar{ʦ}{\texttslig}
+\newunicodechar{ʣ}{\textdzlig}
+%% Vowels
+%% Close
+\newunicodechar{ɨ}{\textbari}
+\newunicodechar{ʉ}{\textbaru}
+\newunicodechar{ɯ}{\textturnm}
+%% Near-close
+\newunicodechar{ɪ}{\textsci}
+\newunicodechar{ʏ}{\textscy}
+\newunicodechar{ʊ}{\textupsilon}
+%% Close-mid
+\newunicodechar{ɵ}{\textbaro}
+\newunicodechar{ɤ}{\textramshorns}
+%% Open-mid
+\newunicodechar{ɛ}{\textepsilon}
+\newunicodechar{ɜ}{\textrevepsilon}
+\newunicodechar{ɞ}{\reflectbox{\textcloseepsilon}} %% Latest changes
+\newunicodechar{ʌ}{\textturnv}
+\newunicodechar{ɔ}{\textopeno}
+%% Near-open
+\newunicodechar{ɐ}{\textturna}
+\newunicodechar{ɶ}{\textscoelig}
+\newunicodechar{ɒ}{\textturnscripta}
+%% Non-Pulmonic
+\newunicodechar{ʘ}{\textbullseye}
+\newunicodechar{ǀ}{\textpipe}
+\newunicodechar{ǃ}{\textipa{!}}
+\newunicodechar{ǂ}{\textdoublebarpipe}
+\newunicodechar{ǁ}{\textdoublepipe}
+%% Voiced Implosives
+\newunicodechar{ɓ}{\texthtb}
+\newunicodechar{ɗ}{\texthtd}
+\newunicodechar{ʄ}{\texthtbardotlessj}
+\newunicodechar{ɠ}{\texthtg}
+\newunicodechar{ʛ}{\texthtscg}
+\newunicodechar{ʼ}{'}
+%% Suprasegmentals
+\newunicodechar{ˈ}{\textprimstress}
+\newunicodechar{ˌ}{\textsecstress}
+\newunicodechar{ː}{\textlengthmark}
+\newunicodechar{ˑ}{\texthalflength}
+\newunicodechar{ʍ}{\textturnw}
+\newunicodechar{ɥ}{\textturnh}
+\newunicodechar{ʜ}{\textsch}
+\newunicodechar{ʢ}{\textbarrevglotstop}
+\newunicodechar{ʡ}{\textbarglotstop}
+\newunicodechar{ɕ}{\textctc}
+\newunicodechar{ʑ}{\textctz}
+\newunicodechar{ɺ}{\textturnlonglegr}
+\newunicodechar{ɧ}{\texththeng}
+%% Diacritics
+\newunicodechar{ʰ}{\textsuperscript{h}}
+\newunicodechar{ʱ}{\textsuperscript{ɦ}}
+\newunicodechar{ʷ}{\textsuperscript{w}}
+\newunicodechar{ʲ}{\textsuperscript{j}}
+\newunicodechar{ˠ}{\textsuperscript{ɣ}}
+\newunicodechar{ˤ}{\textsuperscript{ʕ}}
+%% Tones independent diacritics
+\newunicodechar{ꜜ}{\textdownstep}
+\newunicodechar{ꜛ}{\textupstep}
+%% \newunicodechar{︎↗}{\textglobrise} %% Not working :'(
+%% \newunicodechar{↘}{\textglobfall} %% Need help here
+% \end{macrocode}
+% \begin{macrocode}
+%</package>
+% \end{macrocode}
+% \end{implementation}
+% \Finale \ No newline at end of file
diff --git a/macros/luatex/latex/unitipa/unitipa.ins b/macros/luatex/latex/unitipa/unitipa.ins
new file mode 100644
index 0000000000..7f3e7e2ba1
--- /dev/null
+++ b/macros/luatex/latex/unitipa/unitipa.ins
@@ -0,0 +1,47 @@
+% File: unitipa.ins
+\input l3docstrip.tex
+
+\keepsilent
+\askforoverwritefalse
+
+\preamble
+
+---------------------------------------------------------------------------
+Package: unitipa
+Author: Niranjan
+Description: TIPA typefaces with Unicode characters.
+Repository: https://gitlab.com/niranjanvikastambe/unitipa
+Bug tracker: https://gitlab.com/niranjanvikastambe/unitipa/-/issues
+License: The LaTeX Project Public License v1.3c or later.
+---------------------------------------------------------------------------
+This work may be distributed and/or modified under the conditions of the
+LaTeX Project Public License, either version 1.3c of this license or (at
+your option) any later version.
+
+The latest version of this license is in
+
+ http://www.latex-project.org/lppl.txt.
+
+This work has the LPPL maintenance status `maintained'.
+
+The Current Maintainer of this work is Niranjan.
+
+This work consists of the files unitipa.dtx
+ unitipa.ins
+and the derived file unitipa.sty.
+---------------------------------------------------------------------------
+
+\endpreamble
+
+\usedir{tex/latex/\jobname}
+\generate{
+ \file{\jobname.sty}{\from{\jobname.dtx}{package}}
+}
+
+\nopreamble\nopostamble
+\usedir{doc/latex/\jobname}
+\generate{
+ \file{README.txt}{\from{\jobname.dtx}{readme}}
+}
+
+\endbatchfile \ No newline at end of file
diff --git a/macros/luatex/latex/unitipa/unitipa.pdf b/macros/luatex/latex/unitipa/unitipa.pdf
new file mode 100644
index 0000000000..d74cb5403a
--- /dev/null
+++ b/macros/luatex/latex/unitipa/unitipa.pdf
Binary files differ