texlive[64723] Master: huaz (16oct22)

commits+karl at tug.org commits+karl at tug.org
Sun Oct 16 22:15:17 CEST 2022


Revision: 64723
          http://tug.org/svn/texlive?view=revision&revision=64723
Author:   karl
Date:     2022-10-16 22:15:17 +0200 (Sun, 16 Oct 2022)
Log Message:
-----------
huaz (16oct22)

Modified Paths:
--------------
    trunk/Master/tlpkg/bin/tlpkg-ctan-check
    trunk/Master/tlpkg/tlpsrc/collection-langeuropean.tlpsrc

Added Paths:
-----------
    trunk/Master/texmf-dist/doc/latex/huaz/
    trunk/Master/texmf-dist/doc/latex/huaz/README
    trunk/Master/texmf-dist/doc/latex/huaz/huaz.pdf
    trunk/Master/texmf-dist/doc/latex/huaz/huaz.tex
    trunk/Master/texmf-dist/tex/latex/huaz/
    trunk/Master/texmf-dist/tex/latex/huaz/huaz.sty
    trunk/Master/tlpkg/tlpsrc/huaz.tlpsrc

Added: trunk/Master/texmf-dist/doc/latex/huaz/README
===================================================================
--- trunk/Master/texmf-dist/doc/latex/huaz/README	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/huaz/README	2022-10-16 20:15:17 UTC (rev 64723)
@@ -0,0 +1,23 @@
+huaz.sty package
+
+Copyright 2022 by Tibor Tómács
+
+Automatic definite articles for Hungarian
+
+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 (at your option) any later version.
+The latest version of this license is in
+  http://www.latex-project.org/lppl.txt
+and version 1.3 or later is part of all distributions of LaTeX
+version 2005/12/01 or later.
+
+This work has the LPPL maintenance status `maintained'.
+
+The Current Maintainer of this work is Tibor Tomacs.
+
+This work consists of the files
+
+README (this file)
+huaz.sty (package file)
+huaz.tex and the derived file huaz.pdf (documentation).
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/doc/latex/huaz/README
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/huaz/huaz.pdf
===================================================================
(Binary files differ)

Index: trunk/Master/texmf-dist/doc/latex/huaz/huaz.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/latex/huaz/huaz.pdf	2022-10-16 20:13:35 UTC (rev 64722)
+++ trunk/Master/texmf-dist/doc/latex/huaz/huaz.pdf	2022-10-16 20:15:17 UTC (rev 64723)

Property changes on: trunk/Master/texmf-dist/doc/latex/huaz/huaz.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/huaz/huaz.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/huaz/huaz.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/huaz/huaz.tex	2022-10-16 20:15:17 UTC (rev 64723)
@@ -0,0 +1,381 @@
+%%
+%% `huaz.tex' documentation of the huaz package
+%%
+%% Copyright 2022 by Tibor Tomacs
+%%
+%% 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 (at your option) any later version.
+%% The latest version of this license is in
+%%   http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Tibor Tomacs.
+%%
+\documentclass[12pt]{article}
+\usepackage{listings,xcolor,lmodern,xurl}
+\usepackage[pdfstartview=FitH,colorlinks,allcolors=teal,bookmarksnumbered]{hyperref}
+\usepackage[a4paper,top=1in,bottom=1.2in]{geometry}
+\usepackage[T1]{fontenc}
+\PassOptionsToPackage{defaults=hu-min}{magyar.ldf}
+\usepackage[english,magyar]{babel}
+\setlength{\parindent}{0pt}
+\setlength{\parskip}{6pt}
+
+\lstset{literate={<}{{$\langle$}}1{>}{{$\rangle$}}1
+  {ö}{{\"o}}1{ü}{{\"u}}1{ó}{{\'o}}1{é}{{\'e}}1{á}{{\'a}}1{í}{{\'i}}1}
+
+\lstnewenvironment{examplelst}{\lstset{
+aboveskip=\bigskipamount,
+basicstyle=\footnotesize\color{blue!70!black}\ttfamily,
+backgroundcolor=\color{black!3},
+rulecolor=\color{black!15},
+frame=trbl,
+framesep=5pt,
+columns=fullflexible,
+xleftmargin=5.4pt,
+xrightmargin=5.4pt, 
+keepspaces}}{}
+
+\newcommand{\commandinline}{\hspace*{-15mm}\lstinline[
+delim={[is][\color{green!50!black}\normalfont\small\sffamily]{!}{!}},
+basicstyle=\color{red!70!black}\normalfont\ttfamily,
+columns=fullflexible,
+keepspaces]}
+
+\newcommand{\verbinline}{\lstinline[
+delim={[is][\color{green!50!black}\normalfont\small\sffamily]{!}{!}},
+basicstyle=\normalfont\ttfamily,
+columns=fullflexible,
+keepspaces]}
+
+\makeatletter
+\def\@oddfoot{\hfill\textsf{\color{gray}\thepage}\hfill}
+\def\@evenfoot{\@oddfoot}
+\def\ps at plain{\def\@oddfoot{\hfill\textsf{\color{gray}\thepage}\hfill}}
+\makeatother
+
+\def\huaz{\textbf{\sffamily hu\color{gray}az}}
+
+\begin{document}
+
+\title{The \huaz\ package\\
+       {\large v1.0 (2022/10/16)}}
+\author{Tibor Tómács\\
+        {\normalsize\href{email:tomacs.tibor at uni-eszterhazy.hu}{\nolinkurl{tomacs.tibor at uni-eszterhazy.hu}}}}
+\date{}
+\maketitle
+
+\begin{otherlanguage}{english}
+\begin{abstract}
+In Hungarian there are two definite articles, \emph{``a''} and \emph{``az''}, which are determined by the pronunciation of the subsequent word. The definite article is \emph{``az''}, if the first phoneme of the pronounced word is a vowel, otherwise it is \emph{``a''}.
+The \huaz\ package helps the user to insert automatically the correct definite article for cross-references and other commands containing text. Thus, if these change, the definite articles will also change accordingly.
+
+\medskip
+\emph{Sorry, the documentation is in Hungarian, because only users of the Hungarian language are interested.}
+\end{abstract}
+\end{otherlanguage}
+
+\section{Bevezetés}
+
+A magyar nyelvben a határozott névelő egy szó előtt aszerint \emph{,,a''} vagy \emph{,,az''}, hogy a szó kiejtve mássalhangzóval vagy magánhangzóval kezdődik. Például \emph{,,a szék''} vagy \emph{,,az asztal''}. Ez egyszerűnek tűnik, de gondoljon a következő esetekre:
+
+\begin{itemize}
+\item Például ha oldalszámra akar hivatkozni, akkor a \verb|\pageref| parancsot szoktuk használni. Ha ez elé akar határozott névelőt rakni, akkor nem mindegy, hogy mi az oldalszám. Például \emph{,,az~1.~oldal''}, \emph{,,a~2.~oldal''}, \emph{,,az~5.~oldal''}, \emph{,,a~10.~oldal''}. Így egyáltalán nem biztos, hogy az ,,\verbinline|a \pageref{!<kulcs>!}|'' kód megfelelő eredményt ad. Hasonló a probléma minden kereszthivatkozás esetén (\verb|\ref|, \verb|\pageref|, \verb|\eqref|, \verb|\cite|).
+
+\item Az is fontos, hogy egy kifejezés római szám vagy sem. Például \emph{,,az~V.~fejezet''}, ha \emph{V} római szám, azaz 5 a jelentése. Ugyanakkor \emph{,,a~V.~fejezet''}, ha \emph{V} betűt jelöl vagy alfanumerikus szám esetén a 22 értéket (\emph{V} az angol ábécében a 22.~betű).
+
+\item Néhány mássalhangzó speciális tulajdonságú. Például \emph{,,az M betű''}, de \emph{,,a Magyar Közlöny''}; \emph{,,az Ny betű''}, de \emph{,,a Nyugdíjfolyósító Igazgatóság''}; stb.
+\end{itemize}
+
+Először megemlítünk két eddigi megoldást a határozott névelők automatikus kezelésére, kiemelve azok hibáit és hiányosságait.
+
+\subsection{A magyar.ldf}
+
+Egyik lehetőség a \texttt{babel} csomag \texttt{magyar} opcióját beállító \texttt{magyar.ldf} fájl használata. Ennek teljes dokumentációja elérhető innen: \url{https://math.bme.hu/latex/magyarldf-doc.pdf}. 
+
+Az ebben definiált \verb|\az|, \verb|\aref|, \verb|\apageref|, \verb|\acite|, stb. parancsok alapvetően jól használhatóak, de van néhány fontos hiba, melyek a \huaz\ csomag megírását motiválták:
+
+\begin{itemize}
+\item Az \verb|\eqref| parancsnak nincs névelős verziója. Helyette az \verbinline|\aref({!<kulcs>!})| használható, de ez dőlt betűs környezetben nem álló betűs eredményt ad, mint az \verb|\eqref| esetében. Másik lehetőség, ami ezt a problémát megoldja, az \verbinline|\az{\eqref{!<kulcs>!}}| parancs. Ugyanakkor egyik megoldás sem kezeli a római számozású vagy a \verb|\tag| paranccsal címkézett egyenleteket.
+
+\item Az \verbinline|\az{\ref{!<kulcs>!}}| és \verbinline|\az{\pageref{!<kulcs>!}}| nem kezeli a római számozású hivatkozásokat. 
+
+\item  Az előző hiba akkor is fennáll, amikor az \verb|\az| parancsban egy római számmal kezdődő szöveg van. Például \verb|\az{V.~osztály}| eredménye \emph{,,a V.~osztály''}.
+
+\item Amennyiben nem kereszthivatkozáshoz, hanem egy szöveghez, vagy valamilyen szöveget tároló parancshoz kell automatikus névelő, akkor az ékezetes betűket UTF-8 kódolás esetén rosszul detektálja. A hiba alapvető oka, hogy az UTF-8 kódolású karakterek nem egy, hanem több bájton vannak kódolva, amit a \texttt{magyar.ldf} nem vesz figyelembe. Ezért például \verb|\az{ágy}| eredménye \emph{,,a ágy''}, mert nem betűként érzékeli az \emph{,,á''} betűt, így azt sem tudja, hogy ez magánhangzó. Meglepő módon \verb|\az{száz}| eredménye \emph{,,az száz''} is rossz. Ennek az az oka, hogy mivel számára az \emph{,,á''} nem betű, ezért az \emph{,,sz''} betűt különállónak tekinti, ami elé valóban \emph{,,az''} kell.
+
+\item Hibának ugyan nem tekinthető, de mindenesetre kényelmetlen, hogy például \verb|\az{\textbf{N betű}}| esetén a \verb|\textbf| parancs megzavarja a szó betűinek detektálását, így a névelő helytelenül \emph{,,a''} lesz.
+\end{itemize}
+
+\subsection{A nevelok csomag}
+
+2015-ben készült a \texttt{nevelok} csomag, ami szintén az automatikus határozott névelők kezelésére készült. A szerzője valószínűleg nem ismerte a \texttt{magyar.ldf} már akkor létező lehetőségeit, ezért készíthette ezt a jóval kevesebbet tudó csomagot. 
+
+2022-ben telepített \TeX-rendszeren tesztelve azt tapasztaltam, hogy nem kezeli az ékezetes betűk semmilyen formáját és sok esetben ad kereszthivatkozásoknál is rossz névelőt. Az utóbbinak az az oka, hogy közvetlenül a \verb|\ref| parancsot vizsgálja, ami nem kifejthető parancs. 
+
+Ezen dokumentáció elkészültéig semmilyen fejlesztése nem történt. Jelen állapotában nem javasolt ennek a csomagnak a használata.
+
+\subsection{A \texorpdfstring{\huaz}{huaz} csomag célja és működése}
+
+A \huaz\ csomag célja segíteni a felhasználót abban, hogy a kereszthivatkozásokhoz és szöveget tartalmazó parancsokhoz automatikusan beszúrja a megfelelő határozott névelőt. Így ha ezek változnak, akkor a határozott névelők is megfelelően változnak. 
+
+A másik cél ezt úgy megtenni, hogy a \texttt{magyar.ldf} és a \texttt{nevelok.sty} hibáit és hiányosságait korrigálja illetve pótolja.
+
+A \huaz\ csomag a következő esetekben illeszt az adott szöveg elé ,,az'' névelőt:
+
+\begin{enumerate}
+\item Az első betű magánhangzó (legyen az kis- vagy nagybetű, ékezetes vagy sem, magyar vagy sem, UTF-8, ISO-8859-2 karakterrel vagy repülő ékezettel megadva).
+
+\item Az első betű olyan kis vagy nagy mássalhangzó, amit önmagában kiejtve magánhangzóval kezdünk (például F, L, M, stb.) míg a második karakter (ha van) nem betű, hanem szám, írásjel vagy szóköz. Például ,,M-10''. Ide soroltunk néhány nem magyar ékezetes mássalhangzót is. Például ,,Ň.1''.
+
+\item Az első két karakter egy olyan kis vagy nagy kétjegyű mássalhangzó, amit önmagában kiejtve magánhangzóval kezdünk (például Ny, Ly, Sz, stb.) míg a harmadik karakter (ha van) nem betű, hanem szám, írásjel vagy szóköz. Például ,,NY betű''.
+
+\item Az első karakter 5.
+
+\item 1, 4, 7 vagy 10 jegyű számmal kezdődik és az első számjegy 1 (egy, ezer, egymillió, egymilliárd).
+\end{enumerate}
+
+Ha a szó elején található karakterek római számként is értelmezhetőek, akkor megválasztható, hogy azt konvertálja arab számra és a névelőt ahhoz határozza meg vagy sem. Például ,,XII/A'' esetén.
+
+\section{A \texorpdfstring{\huaz}{huaz} csomag használata}
+
+A \huaz\ csomagot a szokott módon kell betölteni:
+
+\commandinline|\usepackage{huaz}|
+
+Csomagopciók nincsenek. UTF-8 (\texttt{utf8}) és ISO-8859-2 (\texttt{latin2}) kódolású forrásfájl esetén működik, de a repülő ékezeteket is jól kezeli. Kompatibilis a \texttt{pdflatex}, \texttt{xelatex} és \texttt{lualatex} fordítókkal is. Például \texttt{pdflatex} fordítóval a következő betöltés megfelelő:
+
+\begin{examplelst}
+\documentclass{article}
+\usepackage[T1]{fontenc}
+\usepackage{huaz}
+\PassOptionsToPackage{defaults=hu-min}{magyar.ldf}
+\usepackage[magyar]{babel}
+\begin{document}
+ ...
+\end{document}
+\end{examplelst}
+A \texttt{hyperref} csomaggal is kompatibilis, így az is betölthető a \huaz\ mellé.
+
+A \texttt{magyar.ldf} \texttt{defaults=hu-min} opciója bekapcsol néhány olyan opciót is, amely elérhetővé teszi a saját automatikus névelőparancsait. Ezt ugyan nem kötelező, de hasznos a \huaz\ csomag használata esetén kikapcsolni. Ehhez a
+\begin{examplelst}
+\PassOptionsToPackage{defaults=hu-min}{magyar.ldf}
+\end{examplelst}
+sor helyett használja a következőt:
+\begin{examplelst}
+\PassOptionsToPackage{defaults=hu-min,az=no,
+                      shortrefcmds=no,hunnewlabel=no}{magyar.ldf}
+\end{examplelst}
+
+A \texttt{xelatex} és \texttt{lualatex} fordítók esetén \texttt{babel} helyett a 
+\begin{examplelst}
+\usepackage{polyglossia}
+\setdefaultlanguage{hungarian}
+\end{examplelst}
+is használható.
+
+A \huaz\ csomag felhasználja az \texttt{xstring}, \texttt{refcount} és \texttt{iftex} csomagok szolgáltatásait, így ezek is betöltődnek. Másrészt felhasználásra kerül néhány 2021. október 10-én bevezetett változás a \LaTeX\ kerneljében, így csak az ezután telepített rendszereken működik megfelelően a csomag.
+
+\subsection{Parancsok}
+
+\commandinline|\az{!<szöveg>!}|
+
+A \verbinline|!<szöveg>!| elé a megfelelő határozott névelő kerül kisbetűs alakban. Ha a \verbinline|!<szöveg>!| elején római számként értelmezhető karakterek vannak, akkor a névelő az arab megfelelőjéhez igazodik. Például
+\begin{examplelst}
+Idén \az{V.B}~osztály rendezi a farsangot.
+\end{examplelst}
+eredménye ,,Idén az V.B~osztály rendezi a farsangot.''.
+
+A \verbinline|!<szöveg>!| lehet szöveget tároló parancs is. Például
+\begin{examplelst}
+\newcommand{\osztaly}{V.B}
+Idén \az{\osztaly}~osztály rendezi a farsangot.
+\end{examplelst}
+eredménye ,,Idén az V.B~osztály rendezi a farsangot.''.
+
+A \verbinline|!<szöveg>!| tartalmazhat szövegformázó parancsokat is (bővebben lásd \az{\ref{subsec-kapocs}}.~alszakaszban). Például
+\begin{examplelst}
+\newcommand{\osztaly}{V.B}
+Idén \az{\textbf{\osztaly}}~osztály rendezi a farsangot.
+\end{examplelst}
+eredménye ,,Idén az \textbf{V.B}~osztály rendezi a farsangot.''.
+
+A \verbinline|!<szöveg>!| lehet standard kereszthivatkozás is (\verb|\ref|, \verb|\pageref|, \verb|\eqref|, \verb|\cite|). Például
+\begin{examplelst}
+\section{Cím}\label{seca}
+\section{Cím}\label{secb}
+\az{\ref{seca}}.~szakaszban, \az{\textbf{\ref{secb}}}.~szakaszban
+\end{examplelst}
+eredménye ,,az 1. szakaszban, a \textbf{2}. szakaszban''. Ha a \texttt{section} számláló kiírása római számozásra van állítva a \verb|\renewcommand{\thesection}{\Roman{section}}| paranccsal, akkor az előző kód eredménye ,,az I. szakaszban, a \textbf{II}. szakaszban''.
+
+\subsubsection*{Korlátozások}
+\begin{enumerate}
+\item A \verbinline|!<szöveg>!| elején csak a \verb|\ref|, \verb|\pageref|, \verb|\eqref|, \verb|\cite| kereszthivatkozásokkal működik helyesen. Például a \texttt{hyperref} csomag \verb|\ref*| és \verb|\pageref*| parancsai nem működnek közvetlenül \verbinline|!<szöveg>!|-ként, de ez megoldható a később ismertetett \verb|\az*| paranccsal.
+
+\item A \verbinline|!<szöveg>!| elején a \verb|\cite| parancs jól működik a  \texttt{natbib} csomaggal és \texttt{bibtex} esetében is. A \texttt{biblatex} csomag használata esetén akkor működik jól, ha a \texttt{style} vagy \texttt{citestyle} opciók értéke \texttt{numeric}, \texttt{numeric-verb}, \texttt{alphabetic}, \texttt{alphabetic-verb} vagy \texttt{authoryear}. Akkor is jól működik, ha nem adjuk meg a \texttt{style} illetve \texttt{citestyle} opciók egyikét sem.
+
+\item A pdf vázlatfájába nem lehet \verb|\az| paranccsal szöveget beilleszteni. Tehát például a következő kód nem ad helyes vázlatfát, ha \texttt{hyperref} vagy \texttt{bookmark} csomagot használ:
+\begin{examplelst}
+\section{...\az{\ref{sec}}...}
+\end{examplelst}
+Viszont a cím a szövegben, fejlécben és a tartalomjegyzékben jól fog megjelenni. A problémát a később ismertetett \verb|\azsaved| paranccsal lehet megoldani.
+\end{enumerate}
+
+\commandinline|\az*{!<szöveg>!}|
+
+Ugyanaz mint a \texttt{*} nélküli esetben, de ekkor csak a névelő kerül kiírásra. Például \texttt{hyperref} csomag használatával:
+\begin{examplelst}
+\section{Cím}\label{sec}
+\az*{\ref{sec}}~\ref*{sec}.~szakaszban
+\end{examplelst}
+
+\commandinline|\azv{!<szöveg>!}|
+
+Ugyanaz mint \verbinline|\az{!<szöveg>!}|, de ha a \verbinline|!<szöveg>!| elején római számként értelmezhető karakterek vannak, akkor a névelő nem az arab megfelelőjéhez igazodik, hanem mint egyszerű karakterekhez. Például
+\begin{examplelst}
+\renewcommand{\thesection}{\Alph{section}}
+\setcounter{section}{21}
+\section{Cím}\label{sec}
+\az{\ref{sec}}.~szakaszban, \azv{\ref{sec}}.~szakaszban
+\end{examplelst}
+eredménye ,,az V.~szakaszban, a V.~szakaszban'', mert az első esetben a V betűt római számként értelmezte, a második esetben pedig nem. Mivel most alfanumerikus számra van beállítva a \texttt{section} számláló, ezért a második eset a jó.
+
+\commandinline|\azv*{!<szöveg>!}|
+
+Ugyanaz mint a \texttt{*} nélküli esetben, de ekkor csak a névelő kerül kiírásra.
+
+A parancsok nevében az ,,a'' betű kicserélhető ,,A'' betűre. Ekkor a határozott névelő nagybetűvel fog kezdődni, ami mondatok elején szükséges.
+
+\commandinline|\Az{!<szöveg>!}|\\
+\commandinline|\Az*{!<szöveg>!}|\\
+\commandinline|\Azv{!<szöveg>!}|\\
+\commandinline|\Azv*{!<szöveg>!}|
+
+Például
+\begin{examplelst}
+\section{Cím}\label{sec}
+\Az{\ref{sec}}.~szakaszban áttekintjük a téma rövid történetét.
+\end{examplelst}
+eredménye {,,Az 1.~szakaszban áttekintjük a téma rövid történetét.''}.
+
+\commandinline|\azsaved|
+
+Amikor kiadja az előző parancsok bármelyikét, akkor generálódik egy kifejthető \verb|\azsaved| parancs is. Ennek eredménye az a határozott névelő amelyik a szó elé kell. 
+
+Amikor \texttt{hyperref} vagy \texttt{bookmark} csomagot használ, akkor ahogyan azt korábban említettük, a következő kód esetén a cím, fejléc, tartalomjegyzék rendben lesz, de a pdf vázlatfája nem:
+\begin{examplelst}
+\section{\Az{\ref{sec}}...}
+\end{examplelst}
+Ez az \verb|\azsaved| paranccsal a következő módon oldható meg:
+\begin{examplelst}
+\section{\texorpdfstring{\Az{\ref{sec}}...}{\azsaved~\ref{sec}...}}
+\end{examplelst}
+Ekkor a vázlatfába az
+\begin{examplelst}
+\azsaved~\ref{sec}...
+\end{examplelst}
+kód kerül, ami már helyes eredményt ad. Ez a probléma a \verb|\texorpdfstring| helyett az
+
+\commandinline|\aznotshow|
+
+paranccsal egyszerűbben is megoldható. Ugyanis ezt helyezve az \verb|\az| (vagy bármelyik verziója) elé, az eredmény nem jelenik meg, csak az \verb|\azsaved| generálódik le a megfelelő határozott névelővel. Így
+\begin{examplelst}
+\aznotshow\Az{\ref{sec}}
+\section{\azsaved~\ref{sec}...}
+\end{examplelst}
+szintén helyes eredményt ad a vázlatfában is.
+
+\subsection{Rövidítések}
+
+\commandinline|\aref{!<kulcs>!}  | $\equiv$ \verbinline|\az{\ref{!<kulcs>!}}|\\
+\commandinline|\aref*{!<kulcs>!} | $\equiv$ \verbinline|\az*{\ref{!<kulcs>!}}|\\
+\commandinline|\avref{!<kulcs>!} | $\equiv$ \verbinline|\azv{\ref{!<kulcs>!}}|\\
+\commandinline|\avref*{!<kulcs>!}| $\equiv$ \verbinline|\azv*{\ref{!<kulcs>!}}|
+
+\commandinline|\aeqref{!<kulcs>!}  | $\equiv$ \verbinline|\az{\eqref{!<kulcs>!}}|\\
+\commandinline|\aeqref*{!<kulcs>!} | $\equiv$ \verbinline|\az*{\eqref{!<kulcs>!}}|\\
+\commandinline|\aveqref{!<kulcs>!} | $\equiv$ \verbinline|\azv{\eqref{!<kulcs>!}}|\\
+\commandinline|\aveqref*{!<kulcs>!}| $\equiv$ \verbinline|\azv*{\eqref{!<kulcs>!}}|
+
+\commandinline|\apageref{!<kulcs>!}  | $\equiv$ \verbinline|\az{\pageref{!<kulcs>!}}|\\
+\commandinline|\apageref*{!<kulcs>!} | $\equiv$ \verbinline|\az*{\pageref{!<kulcs>!}}|\\
+\commandinline|\avpageref{!<kulcs>!} | $\equiv$ \verbinline|\azv{\pageref{!<kulcs>!}}|\\
+\commandinline|\avpageref*{!<kulcs>!}| $\equiv$ \verbinline|\azv*{\pageref{!<kulcs>!}}|
+
+\commandinline|\acite[!<szöveg>!]{!<kulcs1>!,!<kulcs2>!,!...!}  | $\equiv$ \verbinline|\az{\cite[!<szöveg>!]{!<kulcs1>!,!<kulcs2>!,!...!}}|\\
+\commandinline|\acite*[!<szöveg>!]{!<kulcs1>!,!<kulcs2>!,!...!} | $\equiv$ \verbinline|\az*{\cite[!<szöveg>!]{!<kulcs1>!,!<kulcs2>!,!...!}}|\\
+\commandinline|\avcite[!<szöveg>!]{!<kulcs1>!,!<kulcs2>!,!...!} | $\equiv$ \verbinline|\azv{\cite[!<szöveg>!]{!<kulcs1>!,!<kulcs2>!,!...!}}|\\
+\commandinline|\avcite*[!<szöveg>!]{!<kulcs1>!,!<kulcs2>!,!...!}| $\equiv$ \verbinline|\azv*{\cite[!<szöveg>!]{!<kulcs1>!,!<kulcs2>!,!...!}}|
+
+A parancsok nevében az első ,,a'' betű kicserélhető ,,A'' betűre. Ekkor a határozott névelő nagybetűvel fog kezdődni, ami mondatok elején szükséges:
+
+\commandinline|\Aref \Avref \Aeqref \Aveqref \Apageref \Avpageref \Acite \Avcite|
+
+Például
+\begin{examplelst}
+\section{Cím}\label{seca}
+\section{Cím}\label{secb}
+\Aref{seca}.~és \aref{secb}.~szakaszban
+\end{examplelst}
+eredménye ,,Az 1. és a 2. szakaszban''.
+
+\subsection{A huaz kapocs}\label{subsec-kapocs}
+
+Amikor a \huaz\ csomag megkeresi a megfelelő határozott névelőt, akkor a szövegben található kereszthivatkozásokat lecseréli a kifejthető verziójukra, továbbá a kifejtés során a formázó parancsokat (\verb|\emph|, \verb|\textbf|, \verb|\small|, stb.) figyelmen kívül hagyja. Emiatt lehetséges, hogy például a következő kódok működnek:
+\begin{examplelst}
+\newcommand{\osztaly}{V.B}
+Idén \az{\textbf{\osztaly}}~osztály rendezi a farsangot.
+\end{examplelst}
+
+\begin{examplelst}
+\section{Cím}\label{sec}
+\az{\textbf{\ref{sec}}}
+\end{examplelst}
+
+\commandinline|\AddToHook{huaz}{!<kód>!}|
+
+A \huaz\ csomag azon szövegformázó parancsokat hagyja figyelmen kívül, melyek egy előre definiált listában szerepelnek. Amennyiben olyan formázó parancsot használ, ami még ezen a listán nem található, akkor az a felhasználó által is bővíthető. Például
+\begin{examplelst}
+\newcommand{\myfont}[1]{{\usefont{T1}{yv1d}{m}{n}#1}}
+\newcommand{\mytext}{X.A~osztály}
+\az{\myfont{\mytext}}
+\end{examplelst}
+esetén a \verb|\myfont| nincs ezen a listán, ezért ez a kód hibával fordul. A listára az
+\begin{examplelst}
+\AddToHook{huaz}{\def\myfont{}}
+\end{examplelst}
+módon vehető fel. Ezzel azt érjük el, hogy a névelő megállapítása során a \verb|\myfont| parancs ne jelentsen semmit. Tehát a következő kód már megfelelően működik:
+\begin{examplelst}
+\AddToHook{huaz}{\def\myfont{}}
+\newcommand{\myfont}[1]{{\usefont{T1}{yv1d}{m}{n}#1}}
+\newcommand{\mytext}{X.A~osztály}
+\az{\myfont{\mytext}}
+\end{examplelst}
+Az előző eset a \texttt{huaz} kapocs nélkül így is megoldható:
+\begin{examplelst}
+\newcommand{\myfont}[1]{{\usefont{T1}{yv1d}{m}{n}#1}}
+\newcommand{\mytext}{X.A~osztály}
+\az*{\mytext}~\myfont{\mytext}
+\end{examplelst}
+Ha a \verb|\myfont| a \verb|\mytext| definíciójában szerepel, akkor a \texttt{huaz} kapocs használata nem kerülhető meg:
+\begin{examplelst}
+\AddToHook{huaz}{\def\myfont{}}
+\newcommand{\myfont}[1]{{\usefont{T1}{yv1d}{m}{n}#1}}
+\newcommand{\mytext}{\myfont{X.A~osztály}}
+\az{\mytext}
+\end{examplelst}
+Kereszthivatkozásnál, ha maga a számozás van standardtól különböző paranccsal formázva, akkor a \texttt{huaz} kapocs használata szintén nem kerülhető meg. Például
+\begin{examplelst}
+\AddToHook{huaz}{\def\myfont{}}
+\DeclareRobustCommand{\myfont}[1]{{\usefont{T1}{yv1d}{m}{n}#1}}
+\renewcommand{\thesection}{\myfont{\arabic{section}}}
+\section{Cím}\label{sec}
+\aref{sec}
+\end{examplelst}
+Itt a \verb|\myfont| azért lett erős parancsként definiálva, mert mozgó argumentumba kerül. Az előző példa esete ritkán fordul elő, mert a számláló típusának megadásánál (arab, római, stb.) nem szokás szövegformázó parancsot is alkalmazni.
+
+\end{document}
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/doc/latex/huaz/huaz.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/huaz/huaz.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/huaz/huaz.sty	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/huaz/huaz.sty	2022-10-16 20:15:17 UTC (rev 64723)
@@ -0,0 +1,519 @@
+%%
+%% `huaz.sty'
+%%
+%% Automatic Hungarian definite articles
+%%
+%% Copyright 2022 by Tibor Tomacs
+%%
+%% 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 (at your option) any later version.
+%% The latest version of this license is in
+%%   http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Tibor Tomacs.
+%% 
+\NeedsTeXFormat{LaTeX2e}[2021/10/10]
+\ProvidesPackage{huaz}[2022/10/16 v1.0 Automatic Hungarian definite articles]
+
+\RequirePackage{xstring,refcount,iftex}
+
+\newif\ifhuaz at must@z@\huaz at must@z at false
+\newif\ifhuaz at must@oneunit@\huaz at must@oneunit at false
+\newif\ifhuaz at temp@if@\huaz at temp@if at false
+\newif\ifhuaz at show@\huaz at show@true
+
+\newcounter{huaz at temp@count}
+\newcounter{huaz at temp@count@}
+
+%=================================================
+%
+% utf8:
+% \huaz at list@A = ö,ü,ó,ő,ú,é,á,ű,í,Ö,Ü,Ó,Ő,Ú,É,Á,Ű,Í,Ä,À,Ã,Â,Ă,Å,Ą,Æ,ä,à,ã,â,ă,å,ą,æ,Ë,È,Ê,Ě,Ę,ë,è,ê,ě,ę,Ï,Í,Ì,Î,ï,ì,î,Ò,Õ,Ô,Ø,OE,ò,õ,ô,ø,Ù,Û,Ů,ù,û,ů
+% \huaz at list@X = Ĺ,Ł,ļ,ĺ,ł,Ņ,Ń,Ñ,Ň,Ŋ,ń,ñ,ň,ŋ,Ŗ,Ŕ,Ř,ŗ,ŕ,ř,Ş,Ș,Ś,Š,ş,ș,ś,š,Ÿ,Ý,ÿ,ý
+%
+% latin2:
+% \huaz at list@A = Ą,ą,Á,Â,Ă,Ä,É,Ę,Ë,Ě,Í,Î,Ó,Ô,Ő,Ö,Ů,Ú,Ű,Ü,á,â,ă,ä,é,ę,ë,ě,í
+% \huaz at list@X = Ľ,Ś,Š,Ş,ś,š,ş,Ŕ,Ĺ,Ń,Ň,Ř,Ý,ĺ
+%
+%=================================================
+
+\ifpdftex
+  \def\huaz at utfviii{utf8}
+  \ifx\inputencodingname\huaz at utfviii
+    \def\huaz at list@A{^^c3^^b6,^^c3^^bc,^^c3^^b3,^^c5^^91,^^c3^^ba,^^c3^^a9,^^c3^^a1,^^c5^^b1,^^c3^^ad,^^c3^^96,^^c3^^9c,^^c3^^93,^^c5^^90,^^c3^^9a,^^c3^^89,^^c3^^81,^^c5^^b0,^^c3^^8d,^^c3^^84,^^c3^^80,^^c3^^83,^^c3^^82,^^c4^^82,^^c3^^85,^^c4^^84,^^c3^^86,^^c3^^a4,^^c3^^a0,^^c3^^a3,^^c3^^a2,^^c4^^83,^^c3^^a5,^^c4^^85,^^c3^^a6,^^c3^^8b,^^c3^^88,^^c3^^8a,^^c4^^9a,^^c4^^98,^^c3^^ab,^^c3^^a8,^^c3^^aa,^^c4^^9b,^^c4^^99,^^c3^^8f,^^c3^^8d,^^c3^^8c,^^c3^^8e,^^c3^^af,^^c3^^ac,^^c3^^ae,^^c3^^92,^^c3^^95,^^c3^^94,^^c3^^98,^^4f^^45,^^c3^^b2,^^c3^^b5,^^c3^^b4,^^c3^^b8,^^c3^^99,^^c3^^9b,^^c5^^ae,^^c3^^b9,^^c3^^bb,^^c5^^af}
+    \def\huaz at list@X{^^c4^^b9,^^c5^^81,^^c4^^bc,^^c4^^ba,^^c5^^82,^^c5^^85,^^c5^^83,^^c3^^91,^^c5^^87,^^c5^^8a,^^c5^^84,^^c3^^b1,^^c5^^88,^^c5^^8b,^^c5^^96,^^c5^^94,^^c5^^98,^^c5^^97,^^c5^^95,^^c5^^99,^^c5^^9e,^^c8^^98,^^c5^^9a,^^c5^^a0,^^c5^^9f,^^c8^^99,^^c5^^9b,^^c5^^a1,^^c5^^b8,^^c3^^9d,^^c3^^bf,^^c3^^bd}
+    \huaz at must@oneunit at false
+  \fi
+  \def\huaz at latinii{latin2}
+  \ifx\inputencodingname\huaz at latinii
+    \def\huaz at list@A{^^a1,^^b1,^^c1,^^c2,^^c3,^^c4,^^c9,^^ca,^^cb,^^cc,^^cd,^^ce,^^d3,^^d4,^^d5,^^d6,^^d9,^^da,^^db,^^dc,^^e1,^^e2,^^e3,^^e4,^^e5,^^e9,^^ea,^^eb,^^ec,^^ed,^^ee,^^f3,^^f4,^^f5,^^f6,^^f9,^^fa,^^fb,^^fc}
+    \def\huaz at list@X{^^a3,^^a5,^^a6,^^a9,^^aa,^^b3,^^b6,^^b9,^^ba,^^c0,^^c5,^^d1,^^d2,^^d8,^^dd,^^df,^^e0,^^f1,^^f2,^^f8,^^fd}
+    \huaz at must@oneunit at true
+  \fi
+  \ifx\inputencodingname\huaz at utfviii\else
+    \ifx\inputencodingname\huaz at latinii\else
+      \PackageError{huaz}{You should use utf8 or latin2 inputenc}{}
+    \fi
+  \fi
+\else
+  \def\huaz at list@A{^^^^00f6,^^^^00fc,^^^^00f3,^^^^0151,^^^^00fa,^^^^00e9,^^^^00e1,^^^^0171,^^^^00ed,^^^^00d6,^^^^00dc,^^^^00d3,^^^^0150,^^^^00da,^^^^00c9,^^^^00c1,^^^^0170,^^^^00cd,^^^^00c4,^^^^00c0,^^^^00c3,^^^^00c2,^^^^0102,^^^^00c5,^^^^0104,^^^^00c6,^^^^00e4,^^^^00e0,^^^^00e3,^^^^00e2,^^^^0103,^^^^00e5,^^^^0105,^^^^00e6,^^^^00cb,^^^^00c8,^^^^00ca,^^^^011a,^^^^0118,^^^^00eb,^^^^00e8,^^^^00ea,^^^^011b,^^^^0119,^^^^00cf,^^^^00cd,^^^^00cc,^^^^00ce,^^^^00ef,^^^^00ec,^^^^00ee,^^^^00d2,^^^^00d5,^^^^00d4,^^^^00d8,^^^^004f,^^^^0045,^^^^00f2,^^^^00f5,^^^^00f4,^^^^00f8,^^^^00d9,^^^^00db,^^^^016e,^^^^00f9,^^^^00fb,^^^^016f}
+  \def\huaz at list@X{^^^^0139,^^^^0141,^^^^013c,^^^^013a,^^^^0142,^^^^0145,^^^^0143,^^^^00d1,^^^^0147,^^^^014a,^^^^0144,^^^^00f1,^^^^0148,^^^^014b,^^^^0156,^^^^0154,^^^^0158,^^^^0157,^^^^0155,^^^^0159,^^^^015e,^^^^0218,^^^^015a,^^^^0160,^^^^015f,^^^^0219,^^^^015b,^^^^0161,^^^^0178,^^^^00dd,^^^^00ff,^^^^00fd}
+  \huaz at must@oneunit at true
+\fi
+
+%=================================================
+%
+% \NewHook{huaz}
+%
+%=================================================
+
+\NewHook{huaz}
+
+\AddToHook{huaz}{% In \StrChar, these commands will be considered as one syntax unit.
+  \let\"\relax\let\'\relax\let\H\relax\let\`\relax\let\~\relax\let\^\relax\let\v\relax\let\u\relax%
+  \let\=\relax\let\k\relax\let\.\relax\let\AA\relax\let\aa\relax\let\AE\relax\let\ae\relax\let\&\relax%
+  \let\#\relax\let\_\relax}
+
+\def\huaz at y@#1#{\@gobble}
+\def\huaz at deloptparam{\huaz at y@\relax}% \def\textcolor{\huaz at deloptparam} --> \textcolor[RGB]{0,255,0}{text} --> text; \textcolor{red}{text} --> text
+
+\AddToHook{huaz}{% Ignored commands
+  \def\textrm{}\def\rmfamily{}%
+  \def\textsf{}\def\sffamily{}%
+  \def\texttt{}\def\ttfamily{}%
+  \def\textnormal{}\def\normalfont{}%
+  \def\textbf{}\def\bfseries{}%
+  \def\textmd{}\def\mdseries{}%
+  \def\textit{}\def\itshape{}%
+  \def\textsl{}\def\slshape{}%
+  \def\textsc{}\def\scshape{}%
+  \def\textup{}\def\upshape{}%
+  \def\textulc{}\def\ulcshape{}%
+  \def\textsw{}\def\swshape{}%
+  \def\textssc{}\def\sscshape{}%
+  \def\emph{}\def\em{}%
+  \def\underline{}%
+  \def\tiny{}\def\scriptsize{}\def\footnotesize{}\def\small{}\def\normalsize{}%
+  \def\large{}\def\Large{}\def\LARGE{}\def\huge{}\def\Huge{}%
+  \def\uppercase{}\def\lowercase{}\def\MakeUppercase{}\def\MakeLowercase{}%
+  \def\textcolor{\huaz at deloptparam}\def\color{\huaz at deloptparam}%
+  \def\mbox{}\def\fbox{}}
+
+\AddToHook{huaz}{% Expandable cross-references commands
+  \def\ref#1{\getrefnumber{#1}}%
+  \def\eqref#1{\getrefnumber{#1}}%
+  \def\pageref#1{\getpagerefnumber{#1}}%
+  \def\cite{\huaz at cite}}
+
+%=================================================
+%
+% \huaz at z{<...>} --> "z", if the definite article of <...> is "az"
+% E.g. \huaz at z{asztal} --> "z" ("az asztal")
+%      \huaz at z{szék}   --> ""  ("a szék")
+%
+%=================================================
+
+\NewDocumentCommand{\huaz at z}{m}{%
+  \begingroup%
+  \exploregroups%
+  \UseHook{huaz}%
+  \huaz at must@z at false%
+  %
+  % 1. syntax unit \AA,\aa,\AE,\ae,e,u,i,o,a,E,U,I,O,A,5
+  \StrChar{#1}{1}[\huaz at temp]%
+  \@for\huaz at list:={\AA,\aa,\AE,\ae,e,u,i,o,a,E,U,I,O,A,5}%
+  \do{\IfStrEq{\huaz at temp}{\huaz at list}{\huaz at must@z at true}{}}%
+  %
+  % 1. syntax unit accent command and 2. character e,u,i,o,a,E,U,I,O,A (e.g. "\'A")
+  \ifhuaz at must@z@\else%
+    \huaz at temp@if at false%
+    \StrChar{#1}{1}[\huaz at temp]%
+    \@for\huaz at list:={\",\',\H,\`,\~,\^,\v,\u,\=,\k}%
+    \do{\IfStrEq{\huaz at temp}{\huaz at list}{\huaz at temp@if at true}{}}%
+    \ifhuaz at temp@if@%
+      \StrChar{#1}{2}[\huaz at temp]%
+      \@for\huaz at list:={e,u,i,a,E,U,I,O,A}%
+      \do{\IfStrEq{\huaz at temp}{\huaz at list}{\huaz at must@z at true}{}}%
+    \fi%
+  \fi%
+  %
+  % 1. character ö,ü,ó,ő,ú,é,á,ű,í,Ö,Ü,Ó,Ő,Ú,É,Á,Ű,Í,...
+  \ifhuaz at must@z@\else%
+    \ifhuaz at must@oneunit@\StrLeft{#1}{1}[\huaz at tempa]\else\StrLeft{#1}{2}[\huaz at tempa]\fi% in pdflatex(utf8) Ő is two syntax units; in pdflatex(latin2)/xelatex/lualatex Ő is one syntax unit
+    \@for\huaz at list:=\huaz at list@A%
+    \do{\StrLeft{\huaz at list}{2}[\huaz at tempb]%
+        \IfStrEq{\huaz at tempa}{\huaz at tempb}{\huaz at must@z at true}{}}%
+  \fi%
+  %
+  % 1. character f,l,m,n,r,x,y,F,L,M,N,S,R,X,Y and the 2. character is not letter (e.g. "M-10")
+  \ifhuaz at must@z@\else%
+    \huaz at temp@if at false%
+    \StrChar{#1}{2}[\huaz at temp]%
+    \@for\huaz at list:={;,`,',",+,!,/,=,(,),<,>,@,.,?,:,-,*,0,1,2,3,4,5,6,7,8,9,{,},{ },{},\&,\#,\_,\unskip,\kern}% \kern, \unskip for active characters
+    \do{\IfStrEq{\huaz at temp}{\huaz at list}{\huaz at temp@if at true}{}}%
+    \ifhuaz at temp@if@%
+      \StrChar{#1}{1}[\huaz at temp]%
+      \@for\huaz at list:={f,l,m,n,r,x,y,F,L,M,N,S,R,X,Y}%
+      \do{\IfStrEq{\huaz at temp}{\huaz at list}{\huaz at must@z at true}{}}%
+      \ifhuaz at must@oneunit@%
+        \ifhuaz at must@z@\else%
+          \@for\huaz at list:=\huaz at list@X% in pdflatex(latin2)/xelatex/lualatex Š is one syntax unit
+          \do{\IfStrEq{\huaz at temp}{\huaz at list}{\huaz at must@z at true}{}}%
+        \fi%
+      \fi%
+    \fi%
+  \fi%
+  %
+  % 1. syntax unit accent command, 2. character f,l,m,n,r,x,y,F,L,M,N,S,R,X,Y and the 3. character is not letter (e.g. "\^Y.")
+  \ifhuaz at must@z@\else%
+    \huaz at temp@if at false%
+    \StrChar{#1}{3}[\huaz at temp]%
+    \@for\huaz at list:={;,`,',",+,!,/,=,(,),<,>,@,.,?,:,-,*,0,1,2,3,4,5,6,7,8,9,{,},{ },{},\&,\#,\_,\unskip,\kern}% \kern, \unskip for active characters
+    \do{\IfStrEq{\huaz at temp}{\huaz at list}{\huaz at temp@if at true}{}}%
+    \ifhuaz at temp@if@%
+      \huaz at temp@if at false%
+      \StrChar{#1}{2}[\huaz at temp]%
+      \@for\huaz at list:={f,l,m,n,r,x,y,F,L,M,N,S,R,X,Y}%
+      \do{\IfStrEq{\huaz at temp}{\huaz at list}{\huaz at temp@if at true}{}}%
+      \ifhuaz at temp@if@%
+        \StrChar{#1}{1}[\huaz at temp]%
+        \@for\huaz at list:={\",\',\H,\`,\~,\^,\v,\u,\=,\k}%
+        \do{\IfStrEq{\huaz at temp}{\huaz at list}{\huaz at must@z at true}{}}%
+      \fi%
+    \fi%
+  \fi%
+  %
+  % first two characters ly,Ly,LY,ny,Ny,NY,sz,Sz,SZ,... and the 3. character is not letter (e.g. "NY" or "SZ-2")
+  \ifhuaz at must@z@\else%
+    \huaz at temp@if at false%
+    \StrChar{#1}{3}[\huaz at temp]%
+    \@for\huaz at list:={;,`,',",+,!,/,=,(,),<,>,@,.,?,:,-,*,0,1,2,3,4,5,6,7,8,9,{,},{ },{},\&,\#,\_,\unskip,\kern}% \kern, \unskip for active characters
+    \do{\IfStrEq{\huaz at temp}{\huaz at list}{\huaz at temp@if at true}{}}%
+    \ifhuaz at temp@if@%
+      \StrLeft{#1}{2}[\huaz at temp]%
+      \@for\huaz at list:={ly,Ly,LY,ny,Ny,NY,sz,Sz,SZ}%
+      \do{\IfStrEq{\huaz at temp}{\huaz at list}{\huaz at must@z at true}{}}%
+      \ifhuaz at must@oneunit@\else%
+        \ifhuaz at must@z@\else%
+          \@for\huaz at list:=\huaz at list@X% in pdflatex(utf8) Š is two syntax units
+          \do{\IfStrEq{\huaz at temp}{\huaz at list}{\huaz at must@z at true}{}}%
+        \fi%
+      \fi%
+    \fi%
+  \fi%
+  %
+  % 1. character 1 and the 2. character is not number (e.g. "1H")
+  \ifhuaz at must@z@\else%
+    \StrChar{#1}{1}[\huaz at temp]%
+    \IfStrEq{\huaz at temp}{1}{%
+      \StrChar{#1}{2}[\huaz at temp]%
+      \IfInteger{\huaz at temp}{}{\huaz at must@z at true}%
+    }{}%
+  \fi%
+  %
+  % 1000,...,1999 and the 5. character is not number ("ezer...")
+  \ifhuaz at must@z@\else%
+    \StrLen{#1}[\huaz at temp]%
+    \setcounter{huaz at temp@count}{\huaz at temp}%
+    \ifnum\value{huaz at temp@count}>3%
+      \StrChar{#1}{1}[\huaz at temp]%
+      \IfStrEq{\huaz at temp}{1}{%
+        \StrMid{#1}{2}{4}[\huaz at temp]%
+        \IfInteger{\huaz at temp}{%
+          \StrChar{#1}{5}[\huaz at temp]%
+          \IfInteger{\huaz at temp}{}{\huaz at must@z at true}%
+        }{}%
+      }{}%
+    \fi%
+  \fi%
+  %
+  % 1000000,...,1999999 and the 8. character is not number ("egymillió...")
+  \ifhuaz at must@z@\else%
+    \StrLen{#1}[\huaz at temp]%
+    \setcounter{huaz at temp@count}{\huaz at temp}%
+    \ifnum\value{huaz at temp@count}>6%
+      \StrChar{#1}{1}[\huaz at temp]%
+      \IfStrEq{\huaz at temp}{1}{%
+        \StrMid{#1}{2}{7}[\huaz at temp]%
+        \IfInteger{\huaz at temp}{%
+          \StrChar{#1}{8}[\huaz at temp]%
+          \IfInteger{\huaz at temp}{}{\huaz at must@z at true}%
+        }{}%
+      }{}%
+    \fi%
+  \fi%
+  %
+  % 1000000000,...,1999999999 and the 11. character is not number ("egymilliárd...")
+  \ifhuaz at must@z@\else%
+    \StrLen{#1}[\huaz at temp]%
+    \setcounter{huaz at temp@count}{\huaz at temp}%
+    \ifnum\value{huaz at temp@count}>9%
+      \StrChar{#1}{1}[\huaz at temp]%
+      \IfStrEq{\huaz at temp}{1}{%
+        \StrMid{#1}{2}{10}[\huaz at temp]%
+        \IfInteger{\huaz at temp}{%
+          \StrChar{#1}{11}[\huaz at temp]%
+          \IfInteger{\huaz at temp}{}{\huaz at must@z at true}%
+        }{}%
+      }{}%
+    \fi%
+  \fi%
+  %
+  \gdef\huaz at save{}%
+  \ifhuaz at must@z@\gdef\huaz at save{z}\ifhuaz at show@ z\fi\fi%
+  \endgroup}
+
+%=================================================
+%
+% \huaz at romantoarabic{<...>}
+% If <...> is a roman number, then it will be converted to arabic.
+% If <...> is not a roman number, then the result is -1.
+% If <...> is empty, then the result is 0.
+% E.g. \huaz@\romantoarabic{xiv}  --> "14"
+%      \huaz@\romantoarabic{aaaa} --> "-1"
+%      \huaz@\romantoarabic{}     --> "0"
+%
+%=================================================
+
+\ExplSyntaxOn
+\NewExpandableDocumentCommand{\huaz at romantoarabic}{m}
+ {
+  \int_from_roman:f { #1 }
+ }
+\cs_generate_variant:Nn \int_from_roman:n { f }
+\ExplSyntaxOff
+
+%=================================================
+%
+% \huaz at try@roman{<...>}
+% Collect the characters i,v,x,l,c,d,m,I,V,X,L,C,D,M from the beginning of <...>.
+% This string is saved into \huaz at try@roman at result.
+% If this string is empty, then \huaz at try@roman at result is <...>. E.g.
+% \huaz at try@roman{XIV.6}\huaz at try@roman at result  --> "XIV"
+% \huaz at try@roman{xiii.x}\huaz at try@roman at result --> "xiii"
+% \huaz at try@roman{d.xiii}\huaz at try@roman at result --> "d"
+% \huaz at try@roman{a.xiii}\huaz at try@roman at result --> "a.xiii"
+% \huaz at try@roman{XIii}\huaz at try@roman at result   --> "XIii"
+% \huaz at try@roman{aXIIII}\huaz at try@roman at result --> "aXIIII"
+%
+%=================================================
+
+\NewDocumentCommand{\huaz at try@roman}{m}{%
+  \begingroup%
+  \exploregroups%
+  \UseHook{huaz}%
+  \StrLen{#1}[\huaz at temp]%
+  \setcounter{huaz at temp@count}{\huaz at temp}%
+  \setcounter{huaz at temp@count@}{1}%
+  \gdef\huaz at try@roman at result{}%
+  \loop%
+    \huaz at temp@if at false%
+    \StrChar{#1}{\thehuaz at temp@count@}[\huaz at temp]%
+    \IfSubStr{ivxlcdmIVXLCDM}{\huaz at temp}{%
+      \expandafter\g at addto@macro\expandafter\huaz at try@roman at result\expandafter{\huaz at temp}}
+      {\setcounter{huaz at temp@count@}{\value{huaz at temp@count}}}%
+    \ifnum\value{huaz at temp@count@}<\value{huaz at temp@count}\stepcounter{huaz at temp@count@}%
+  \repeat%
+  \ifx\huaz at try@roman at result\@empty\gdef\huaz at try@roman at result{#1}\fi%
+  \endgroup}
+
+%=================================================
+%
+% \aznotshow
+%
+%=================================================
+
+\def\aznotshow{\huaz at show@false}
+
+%=================================================
+%
+% \huaz at text
+%
+%=================================================
+
+\NewDocumentCommand{\huaz at text}{st{=}m}{%
+  \huaz at try@roman{#3}%
+  \def\huaz at tempa{-1}%
+  \edef\huaz at tempb{\huaz at romantoarabic{\huaz at try@roman at result}}%
+  \IfBooleanTF{#2}{\huaz at z{#3}}{%
+    \ifx\huaz at tempb\huaz at tempa%
+      \huaz at z{#3}%
+    \else%
+      \huaz at z{\huaz at romantoarabic{\huaz at try@roman at result}}%
+    \fi}%
+  \IfBooleanF{#1}{\ifhuaz at show@~#3\fi}%
+  \huaz at show@true}
+
+%=================================================
+%
+% \az \Az \azv \Azv \azsaved
+%
+%=================================================
+
+\DeclareDocumentCommand{\az}{sm}{\ifhuaz at show@ a\fi\IfBooleanTF{#1}{\huaz at text*{#2}}{\huaz at text{#2}}\xdef\azsaved{a\huaz at save}}
+\DeclareDocumentCommand{\Az}{sm}{\ifhuaz at show@ A\fi\IfBooleanTF{#1}{\huaz at text*{#2}}{\huaz at text{#2}}\xdef\azsaved{A\huaz at save}}
+\DeclareDocumentCommand{\azv}{sm}{\ifhuaz at show@ a\fi\IfBooleanTF{#1}{\huaz at text*={#2}}{\huaz at text={#2}}\xdef\azsaved{a\huaz at save}}
+\DeclareDocumentCommand{\Azv}{sm}{\ifhuaz at show@ A\fi\IfBooleanTF{#1}{\huaz at text*={#2}}{\huaz at text={#2}}\xdef\azsaved{A\huaz at save}}
+
+%=================================================
+%
+% \aref \Aref \avref \Avref
+%
+%=================================================
+
+\DeclareDocumentCommand{\aref}{sm}{\IfBooleanTF{#1}{\az*{\ref{#2}}}{\az{\ref{#2}}}}
+\DeclareDocumentCommand{\Aref}{sm}{\IfBooleanTF{#1}{\Az*{\ref{#2}}}{\Az{\ref{#2}}}}
+\DeclareDocumentCommand{\avref}{sm}{\IfBooleanTF{#1}{\azv*{\ref{#2}}}{\azv{\ref{#2}}}}
+\DeclareDocumentCommand{\Avref}{sm}{\IfBooleanTF{#1}{\Azv*{\ref{#2}}}{\Azv{\ref{#2}}}}
+
+%=================================================
+%
+% \apageref \Apageref \avpageref \Avpageref
+%
+%=================================================
+
+\DeclareDocumentCommand{\apageref}{sm}{\IfBooleanTF{#1}{\az*{\pageref{#2}}}{\az{\pageref{#2}}}}
+\DeclareDocumentCommand{\Apageref}{sm}{\IfBooleanTF{#1}{\Az*{\pageref{#2}}}{\Az{\pageref{#2}}}}
+\DeclareDocumentCommand{\avpageref}{sm}{\IfBooleanTF{#1}{\azv*{\pageref{#2}}}{\azv{\pageref{#2}}}}
+\DeclareDocumentCommand{\Avpageref}{sm}{\IfBooleanTF{#1}{\Azv*{\pageref{#2}}}{\Azv{\pageref{#2}}}}
+
+%=================================================
+%
+% \aeqref \Aeqref \aveqref \Aveqref
+%
+%=================================================
+
+\DeclareDocumentCommand{\aeqref}{sm}{\IfBooleanTF{#1}{\az*{\eqref{#2}}}{\az{\eqref{#2}}}}
+\DeclareDocumentCommand{\Aeqref}{sm}{\IfBooleanTF{#1}{\Az*{\eqref{#2}}}{\Az{\eqref{#2}}}}
+\DeclareDocumentCommand{\aveqref}{sm}{\IfBooleanTF{#1}{\azv*{\eqref{#2}}}{\azv{\eqref{#2}}}}
+\DeclareDocumentCommand{\Aveqref}{sm}{\IfBooleanTF{#1}{\Azv*{\eqref{#2}}}{\Azv{\eqref{#2}}}}
+
+%=================================================
+%
+% \acite \Acite \avcite \Avcite
+%
+%=================================================
+
+\DeclareDocumentCommand{\acite}{som}{%
+  \IfBooleanTF{#1}{%
+    \IfNoValueTF{#2}{%
+      \az*{\cite{#3}}%
+    }{%
+      \az*{\cite[#2]{#3}}%
+    }%
+  }{%
+    \IfNoValueTF{#2}{%
+      \az{\cite{#3}}%
+    }{%
+      \az{\cite[#2]{#3}}%
+    }%
+  }}
+
+\DeclareDocumentCommand{\Acite}{som}{%
+  \IfBooleanTF{#1}{%
+    \IfNoValueTF{#2}{%
+      \Az*{\cite{#3}}%
+    }{%
+      \Az*{\cite[#2]{#3}}%
+    }%
+  }{%
+    \IfNoValueTF{#2}{%
+      \Az{\cite{#3}}%
+    }{%
+      \Az{\cite[#2]{#3}}%
+    }%
+  }}
+
+\DeclareDocumentCommand{\avcite}{som}{%
+  \IfBooleanTF{#1}{%
+    \IfNoValueTF{#2}{%
+      \azv*{\cite{#3}}%
+    }{%
+      \azv*{\cite[#2]{#3}}%
+    }%
+  }{%
+    \IfNoValueTF{#2}{%
+      \azv{\cite{#3}}%
+    }{%
+      \azv{\cite[#2]{#3}}%
+    }%
+  }}
+
+\DeclareDocumentCommand{\Avcite}{som}{%
+  \IfBooleanTF{#1}{%
+    \IfNoValueTF{#2}{%
+      \Azv*{\cite{#3}}%
+    }{%
+      \Azv*{\cite[#2]{#3}}%
+    }%
+  }{%
+    \IfNoValueTF{#2}{%
+      \Azv{\cite{#3}}%
+    }{%
+      \Azv{\cite[#2]{#3}}%
+    }%
+  }}
+
+%=================================================
+%
+% \huaz at cite
+%
+%=================================================
+
+\def\huaz at x@#1#{\huaz at citelist}
+\def\huaz at cite{\huaz at x@\relax}
+\def\huaz at citelist#1{\huaz@@citelist#1,\relax,}
+\def\huaz@@citelist#1,{\ifx#1\relax\else\@nameuse{huaz at bib@#1},\expandafter\huaz@@citelist\fi}%
+
+\AddToHook{begindocument/before}{
+  %
+  \def\huaz at bibparam{}
+  %
+  \@ifpackageloaded{natbib}{
+    \ifNAT at numbers\def\huaz at bibparam#1#2#3{#1}\else\def\huaz at bibparam#1#2#3{#3}\fi}{}
+  %
+  \@ifpackageloaded{babel}{
+    \let\huaz at old@bbl at bibcite\bbl at bibcite
+    \def\bbl at bibcite#1#2{\global\@namedef{huaz at bib@#1}{\huaz at bibparam#2}\huaz at old@bbl at bibcite{#1}{#2}}}{}
+  %
+  \@ifpackageloaded{hyperref}{
+    \let\huaz at old@Hy at bibcite\Hy at bibcite
+    \def\Hy at bibcite#1#2{\global\@namedef{huaz at bib@#1}{\huaz at bibparam#2}\huaz at old@Hy at bibcite{#1}{#2}}}{}
+  %
+  \let\huaz at old@bibcite\bibcite
+  \def\bibcite#1#2{\global\@namedef{huaz at bib@#1}{\huaz at bibparam#2}\huaz at old@bibcite{#1}{#2}}
+  %
+  \@ifpackageloaded{biblatex}{
+    \def\huaz at biblatexlabel{}
+    \ifx\blx at opt@eldt at style\@empty\ifx\blx at opt@eldt at citestyle\@empty\def\huaz at biblatexlabel{\strfield{labelnumber}}\fi\fi
+    \def\huaz at temp{numeric}
+    \ifx\blx at opt@eldt at style\huaz at temp\def\huaz at biblatexlabel{\csfield{labelnumber}}\fi
+    \ifx\blx at opt@eldt at citestyle\huaz at temp\def\huaz at biblatexlabel{\csfield{labelnumber}}\fi
+    \def\huaz at temp{numeric-verb}
+    \ifx\blx at opt@eldt at style\huaz at temp\def\huaz at biblatexlabel{\csfield{labelnumber}}\fi
+    \ifx\blx at opt@eldt at citestyle\huaz at temp\def\huaz at biblatexlabel{\csfield{labelnumber}}\fi
+    \def\huaz at temp{alphabetic}
+    \ifx\blx at opt@eldt at style\huaz at temp\def\huaz at biblatexlabel{\strfield{labelalpha}}\fi
+    \ifx\blx at opt@eldt at citestyle\huaz at temp\def\huaz at biblatexlabel{\strfield{labelalpha}}\fi
+    \def\huaz at temp{alphabetic-verb}
+    \ifx\blx at opt@eldt at style\huaz at temp\def\huaz at biblatexlabel{\strfield{labelalpha}}\fi
+    \ifx\blx at opt@eldt at citestyle\huaz at temp\def\huaz at biblatexlabel{\strfield{labelalpha}}\fi
+    \def\huaz at temp{authoryear}
+    \ifx\blx at opt@eldt at style\huaz at temp\settoggle{blx at labelalpha}{true}\def\huaz at biblatexlabel{\strfield{labelalpha}}\fi
+    \ifx\blx at opt@eldt at citestyle\huaz at temp\settoggle{blx at labelalpha}{true}\def\huaz at biblatexlabel{\strfield{labelalpha}}\fi
+    \ifx\huaz at biblatexlabel\@empty\else
+      \AtEveryBibitem{\protected at write\@auxout{}{\string\global\string\@namedef{huaz at bib@\strfield{entrykey}}{\huaz at biblatexlabel}}}
+    \fi}{}}
+
+%=================================================
+%
+% end
+%
+%=================================================
+
+\endinput
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/tex/latex/huaz/huaz.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/tlpkg/bin/tlpkg-ctan-check
===================================================================
--- trunk/Master/tlpkg/bin/tlpkg-ctan-check	2022-10-16 20:13:35 UTC (rev 64722)
+++ trunk/Master/tlpkg/bin/tlpkg-ctan-check	2022-10-16 20:15:17 UTC (rev 64723)
@@ -401,7 +401,7 @@
     hletter hlist
     hmtrump hobby hobete hobsub hologo hook-pre-commit-pkg hopatch horoscop
     hpsdiss href-ul hrefhide hrlatex
-    hu-berlin-bundle huawei hulipsum hustthesis
+    hu-berlin-bundle huawei huaz hulipsum hustthesis
     hvarabic hvextern hvfloat hvindex hvlogos hvpygmentex hvqrurl
     hycolor hypdestopt hypdoc hypdvips
     hyper hyperbar hypernat hyperref hyperxmp

Modified: trunk/Master/tlpkg/tlpsrc/collection-langeuropean.tlpsrc
===================================================================
--- trunk/Master/tlpkg/tlpsrc/collection-langeuropean.tlpsrc	2022-10-16 20:13:35 UTC (rev 64722)
+++ trunk/Master/tlpkg/tlpsrc/collection-langeuropean.tlpsrc	2022-10-16 20:15:17 UTC (rev 64723)
@@ -37,6 +37,7 @@
 depend finbib
 depend gloss-occitan
 depend hrlatex
+depend huaz
 depend hulipsum
 depend hyphen-croatian
 depend hyphen-danish

Added: trunk/Master/tlpkg/tlpsrc/huaz.tlpsrc
===================================================================


More information about the tex-live-commits mailing list.