diff options
author | Karl Berry <karl@freefriends.org> | 2024-04-28 20:06:19 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2024-04-28 20:06:19 +0000 |
commit | c0d30cb2ee79016673b2d4621587146f65a5cb63 (patch) | |
tree | d0af4af6b7e12ad1a04c2719170f27e74e4d9d12 /Master/texmf-dist/doc/latex | |
parent | 7ad18b307895db5a96d3a35150c5d92314231f60 (diff) |
huaz (28apr24)
git-svn-id: svn://tug.org/texlive/trunk@71112 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc/latex')
-rw-r--r-- | Master/texmf-dist/doc/latex/huaz/README | 2 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/huaz/huaz.pdf | bin | 323827 -> 358059 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/huaz/huaz.tex | 709 |
3 files changed, 607 insertions, 104 deletions
diff --git a/Master/texmf-dist/doc/latex/huaz/README b/Master/texmf-dist/doc/latex/huaz/README index b37490a04a4..4e8306629f1 100644 --- a/Master/texmf-dist/doc/latex/huaz/README +++ b/Master/texmf-dist/doc/latex/huaz/README @@ -14,7 +14,7 @@ version 2005/12/01 or later. This work has the LPPL maintenance status `maintained'. -The Current Maintainer of this work is Tibor Tomacs. +The Current Maintainer of this work is Tibor Tómács. This work consists of the files diff --git a/Master/texmf-dist/doc/latex/huaz/huaz.pdf b/Master/texmf-dist/doc/latex/huaz/huaz.pdf Binary files differindex fe31b1cfad3..9a7ee91180a 100644 --- a/Master/texmf-dist/doc/latex/huaz/huaz.pdf +++ b/Master/texmf-dist/doc/latex/huaz/huaz.pdf diff --git a/Master/texmf-dist/doc/latex/huaz/huaz.tex b/Master/texmf-dist/doc/latex/huaz/huaz.tex index a9bb258ad64..4c539cbdd45 100644 --- a/Master/texmf-dist/doc/latex/huaz/huaz.tex +++ b/Master/texmf-dist/doc/latex/huaz/huaz.tex @@ -1,7 +1,7 @@ %% %% `huaz.tex' documentation of the huaz package %% -%% Copyright 2022 by Tibor Tomacs +%% Copyright 2022-2024 by Tibor Tómács %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3 @@ -13,24 +13,30 @@ %% %% This work has the LPPL maintenance status `maintained'. %% -%% The Current Maintainer of this work is Tibor Tomacs. +%% The Current Maintainer of this work is Tibor Tómács. %% \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[a4paper,top=1in,bottom=1in]{geometry} +\usepackage{listings,xcolor,lmodern,xurl,multicol} +\usepackage[ + pdfstartview=FitH, + colorlinks, + allcolors=teal, + bookmarksnumbered, + bookmarksopen, + ]{hyperref} \usepackage[T1]{fontenc} -\PassOptionsToPackage{defaults=hu-min}{magyar.ldf} +\PassOptionsToPackage{defaults=hu-min,labelitems=unchanged}{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} + {ö}{{\"o}}1{ő}{{\H o}}1{ü}{{\"u}}1{ó}{{\'o}}1{é}{{\'e}}1{á}{{\'a}}1{í}{{\'i}}1} \lstnewenvironment{examplelst}{\lstset{ aboveskip=\bigskipamount, -basicstyle=\footnotesize\color{blue!70!black}\ttfamily, +basicstyle=\color{blue!70!black}\ttfamily, backgroundcolor=\color{black!3}, rulecolor=\color{black!15}, frame=trbl, @@ -60,83 +66,121 @@ keepspaces]} \def\huaz{\textbf{\sffamily hu\color{gray}az}} +\def\labelenumi{\textbf{\theenumi.}} + \begin{document} -\title{The \huaz\ package\\ - {\large v1.2 (2024/04/20)}} +\title{The \huaz\ package\\{\large v2.0 (2024/04/28)}} \author{Tibor Tómács\\ - {\normalsize\href{email:tomacs.tibor@gmail.com}{\nolinkurl{tomacs.tibor@gmail.com}}}} + {\normalsize\href{email:tomacs.tibor@gmail.com}{\nolinkurl{tomacs.tibor@gmail.com}}}} \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. +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{The documentation is in Hungarian, because only Hungarian-speaking users are interested.} +{The documentation is in Hungarian, because only Hungarian-speaking users 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: +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ű szabály, de írásban összetett vizsgálatot igényel. +Itt felsorolunk néhány nehézséget: \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. +\item +Ha oldalszámra akarunk hivatkozni, akkor a \verb|\pageref| parancsot szoktuk használni. +Ha ez elé kell 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}. +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: +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. +\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 +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. +A \texttt{nevelok} csomag szintén az automatikus határozott névelők kezelésére készült. +Nem kezeli az ékezetes betűk semmilyen formáját és sok esetben ad kereszthivatkozásoknál rossz névelőt. +Az utóbbinak az az oka, hogy közvetlenül a \verb|\ref| és \verb|\pageref| parancsokat vizsgálja, amelyek nem kifejthetőek. +Jelenlegi állapotában nem ajánlott használni ezt a csomagot. \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 \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ű 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ő 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ő 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 +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). +\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. @@ -147,21 +191,26 @@ 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ő: +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} +\usepackage{huaz} \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 +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. +Ezeket 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} @@ -171,74 +220,114 @@ sor helyett használja a következőt: shortrefcmds=no,hunnewlabel=no}{magyar.ldf} \end{examplelst} -A \texttt{xelatex} és \texttt{lualatex} fordítók esetén \texttt{babel} helyett a +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. +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 +A \verbinline|!<szöveg>!| elé a megfelelő határozott névelő kerül kisbetűs alakban. +Ha a \verbinline|!<szöveg>!| római számként is értelmezhető (pl.~,,XII''), esetleg azt írásjel vagy szóköz követi (pl.~,,XII.A''), 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.''. +De +\begin{examplelst} +\az{VB} \az{V6} +\end{examplelst} +eredménye ,,a VB a V6'' lesz, mert a ,,V'' után betű illetve szám következik, ezért nem 5-nek értelmezi, hanem V betűnek. -A \verbinline|!<szöveg>!| lehet szöveget tároló parancs is. Például +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 +A \verbinline|!<szöveg>!| tartalmazhat szövegformázó parancsokat is (bővebben lásd \az{\ref{subsec-ignoralt-parancsok}}.~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 +A \verbinline|!<szöveg>!| lehet standard kereszthivatkozás is (\verb|\ref|, \verb|\ref*|, \verb|\pageref|, \verb|\pageref*|, \verb|\eqref|, \verb|\refeq|, \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 +\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''. +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|\ref*|, \verb|\pageref|, \verb|\pageref*|, \verb|\eqref|, \verb|\cite| kereszthivatkozásokkal működik helyesen. -\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{enumerate} +\item +A \verbinline|!<szöveg>!| elején csak a \verb|\ref|, \verb|\ref*|, \verb|\pageref|, \verb|\pageref*|, \verb|\eqref|, \verb|\refeq|, \verb|\cite| kereszthivatkozásokkal működik helyesen. +(Az \verb|\eqref| az \texttt{amsmath}, a \verb|\refeq| pedig a \texttt{mathtools} csomaggal van definiálva.) + +\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 (bár a cím a szövegben, fejlécben és a tartalomjegyzékben jól fog megjelenni). \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. +A problémát a később ismertetett \verb|\azsaved| illetve \verb|\aznotshow| parancsokkal lehet megoldani. \end{enumerate} \commandinline|\az*{!<szöveg>!}| Ugyanaz mint a \verb|*| nélküli esetben, de ekkor csak a névelő kerül kiírásra. +Például, ha az \texttt{amsmath} és \texttt{hyperref} csomagok használata mellett szeretnénk egy link nélküli egyenlethivatkozást, akkor ezt (mivel nincs \verb|\eqref*| definiálva) például így tehetjük meg: +\begin{examplelst} +\begin{equation}\label{eq} +a=b +\end{equation} +\emph{Lásd \textup{(\ref*{eq})} egyenletet!} +\end{examplelst} +Szebb lenne a mondat határozott névelővel a képlet száma előtt, de most nem ad feltétlenül helyes eredményt az +\begin{examplelst} +\az{\textup{(\ref*{eq})}} +\end{examplelst} +kód, mert az első karakter a \texttt{(} jel lesz, és nem a képlet száma. +Így minden esetben ,,a'' lesz a névelő. +Ezt a következő módon javíthatjuk: +\begin{examplelst} +\az*{\ref{eq}} \textup{(\ref*{eq})} +\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 +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ó. +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>!}| @@ -249,7 +338,8 @@ Ugyanaz mint a \verb|*| nélküli esetben, de ekkor csak a névelő kerül kiír \commandinline|\Azv{!<szöveg>!}|\\ \commandinline|\Azv*{!<szöveg>!}| -Ugyanaz, mint a kis ,,\texttt{a}'' betűvel kezdődő parancsok, de ekkor a határozott névelő nagybetűvel fog kezdődni, ami mondatok elején szükséges. Például +Ugyanaz, mint a kis ,,\texttt{a}'' betűvel kezdődő parancsok, de ekkor a határozott névelő nagybetűvel kezdődik, ami mondatok elején szükséges. +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. @@ -258,15 +348,17 @@ 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. +Az előző parancsok bármelyikét használva, generálódik egy kifejthető \verb|\azsaved| parancs. +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: +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}...}} +\section{% + \texorpdfstring{\Az{\ref{sec}}...}{\azsaved~\ref{sec}...}} \end{examplelst} Ekkor a vázlatfába az \begin{examplelst} @@ -276,52 +368,136 @@ kód kerül, ami már helyes eredményt ad. \commandinline|\aznotshow| -Az előző probléma a \verb|\texorpdfstring| helyett ezzel a 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 +Az előző probléma a \verb|\texorpdfstring| helyett ezzel a 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. +\commandinline|\azseparator{!<kód>!}| + +Ezzel lehet megadni, hogy a határozott névelő és a \verbinline|!<szöveg>!| mivel legyen elválasztva. +Alapértelmezetten ez a törhetetlen normál méretű szóköz, ami +\begin{examplelst} +\azseparator{~} +\end{examplelst} +módon lett beállítva. +Ha át akarjuk állítani például törhető szóközre akkor ez +\begin{examplelst} +\azseparator{ } +\end{examplelst} +módon tehető meg. + \subsection{Rövidítések} -A \verb|\ref|, \verb|\pageref|, \verb|\eqref|, \verb|\cite| kereszthivatkozások (csak a \verb|*| nélküli verziók) elé nem csak az előbbi parancsokkal tehetünk határozott névelőt, mert mindegyiknek van egy rövidített egyparancsos verziója is: +A \verb|\ref|, \verb|\ref*|, \verb|\eqref|, \verb|\refeq|, \verb|\pageref|, \verb|\pageref*|, \verb|\cite| kereszthivatkozások elé nem csak az előbbi parancsokkal tehetünk határozott névelőt, ugyanis mindegyiknek van egy rövidített egyparancsos verziója is: \commandinline|\aref{!<kulcs>!} | $\equiv$ \verbinline|\az{\ref{!<kulcs>!}}|\\ -\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|\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|\aveqref{!<kulcs>!} | $\equiv$ \verbinline|\azv{\eqref{!<kulcs>!}}| + +\commandinline|\arefeq{!<kulcs>!} | $\equiv$ \verbinline|\az{\refeq{!<kulcs>!}}|\\ +\commandinline|\avrefeq{!<kulcs>!} | $\equiv$ \verbinline|\azv{\refeq{!<kulcs>!}}| \commandinline|\apageref{!<kulcs>!} | $\equiv$ \verbinline|\az{\pageref{!<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|\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>!,!...!}}| +\commandinline|\avcite[!<szöveg>!]{!<kulcs1>!,!<kulcs2>!,!...!} | $\equiv$ \verbinline|\azv{\cite[!<szöveg>!]{!<kulcs1>!,!<kulcs2>!,!...!}}| -A parancsok nevében az első ,,\texttt{a}'' betű kicserélhető ,,\texttt{A}'' betűre. Ekkor a határozott névelő nagybetűvel fog kezdődni, ami mondatok elején szükséges: +A parancsok nevében az első ,,\texttt{a}'' betű kicserélhető ,,\texttt{A}'' betűre. +Ekkor a határozott névelő nagybetűvel kezdődik, ami mondatok elején szükséges: -\commandinline|\Aref \Avref \Aeqref \Aveqref \Apageref \Avpageref \Acite \Avcite| +\commandinline|\Aref \Aref* \Avref \Avref*|\\ +\commandinline|\Aeqref \Aveqref|\\ +\commandinline|\Arefeq \Avrefeq|\\ +\commandinline|\Apageref \Apageref* \Avpageref \Avpageref*|\\ +\commandinline|\Acite \Avcite| Például \begin{examplelst} \section{Cím}\label{seca} \section{Cím}\label{secb} -\Aref{seca}.~és \aref{secb}.~szakaszban +\Aref{seca}.~és \aref{secb}.~szakaszokban \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ó \verb|\ref|, \verb|\ref*|, \verb|\pageref|, \verb|\pageref*|, \verb|\eqref|, \verb|\cite| kereszthivatkozásokat lecseréli a kifejthető verziójukra, továbbá a kifejtés során egy adott listában található 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: +eredménye ,,Az 1. és a 2. szakaszokban''. + +\subsection{Ignorált parancsok}\label{subsec-ignoralt-parancsok} + +Amikor a \huaz\ csomag megkeresi a megfelelő határozott névelőt, akkor a szövegben a következő parancsokat figyelmen kívül hagyja: + +\begin{multicols}{4} +\verb|\bfseries|\\ +\verb|\color|\\ +\verb|\emph|\\ +\verb|\em|\\ +\verb|\enquote|\\ +\verb|\fbox|\\ +\verb|\fontencoding|\\ +\verb|\fontfamily|\\ +\verb|\fontseries|\\ +\verb|\fontshape|\\ +\verb|\fontsize|\\ +\verb|\footnotesize|\\ +\verb|\framebox|\\ +\verb|\Huge|\\ +\verb|\huge|\\ +\verb|\itshape|\\ +\verb|\LARGE|\\ +\verb|\Large|\\ +\verb|\large|\\ +\verb|\lowercase|\\ +\verb|\makebox|\\ +\verb|\MakeLowercase|\\ +\verb|\MakeUppercase|\\ +\verb|\mbox|\\ +\verb|\mdseries|\\ +\verb|\normalfont|\\ +\verb|\normalsize|\\ +\verb|\rmfamily|\\ +\verb|\scriptsize|\\ +\verb|\scshape|\\ +\verb|\selectfont|\\ +\verb|\sffamily|\\ +\verb|\slshape|\\ +\verb|\small|\\ +\verb|\sscshape|\\ +\verb|\swshape|\\ +\verb|\textbf|\\ +\verb|\textcolor|\\ +\verb|\textit|\\ +\verb|\textmd|\\ +\verb|\textnormal|\\ +\verb|\textqq|\\ +\verb|\textrm|\\ +\verb|\textsc|\\ +\verb|\textsf|\\ +\verb|\textsl|\\ +\verb|\textssc|\\ +\verb|\textsw|\\ +\verb|\texttt|\\ +\verb|\textulc|\\ +\verb|\textup|\\ +\verb|\tiny|\\ +\verb|\told|\\ +\verb|\ttfamily|\\ +\verb|\ulcshape|\\ +\verb|\underline|\\ +\verb|\uppercase|\\ +\verb|\upshape|\\ +\verb|\usefont| +\end{multicols} + +Emiatt lehetséges, hogy a következő kódok jól működnek: \begin{examplelst} \newcommand{\osztaly}{V.B} Idén \az{\textbf{\osztaly}}~osztály rendezi a farsangot. @@ -329,52 +505,379 @@ Idén \az{\textbf{\osztaly}}~osztály rendezi a farsangot. \begin{examplelst} \section{Cím}\label{sec} -\az{\textbf{\ref{sec}}} +\az{\footnotesize\ref{sec}} \end{examplelst} -De a következő kód is jól fog működni: +De ez is helyes eredményt ad: \begin{examplelst} \newcommand{\myfont}[1]{{\usefont{T1}{yv1d}{m}{n}#1}} -\newcommand{\osztaly}{X.A~osztály} +\newcommand{\osztaly}{V.A~osztály} \az{\myfont{\osztaly}} \end{examplelst} -Ez nem azért van, mert a \verb|\myfont| is szerepel ebben az adott listában, hanem azért, mert a \verb|\myfont| kifejtésében található \verb|\usefont| benne van. +Azért kapunk helyes eredményt, mert a \verb|\myfont| kifejtésében található \verb|\usefont| szerepel az előző listában. Ha a \verb|\myfont| erős parancsként lett volna definiálva, akkor már nem működne megfelelően az előző kód (lásd később). Ebben az esetben a \verb|\myfont| parancsot is fel kell venni a listára. + +\commandinline|\huazignorecmd[!<opció>!]{!<parancs>!}| + +Az ignoráló listát ezzel lehet bővíteni. +A \verbinline|!<parancs>!| helyére az ignorálandó parancsot kell írni az argumentumai és \texttt{*} nélkül. +Az \verbinline|!<opció>!| \texttt{0} és \texttt{9} közötti egész szám lehet. +Amennyiben ezektől eltérő a beírt \verbinline|!<opció>!|, akkor erre figyelmeztet a fordító. -\commandinline|\AddToHook{huaz}{!<kód>!}| +A használata három esetre bontható. + +\paragraph{1. eset} +% +Opció nélkül használva, a \verbinline|!<parancs>!| a névelő megállapításakor törlődik, de az utána írt \texttt{*}, opció vagy argumentum nem. +Deklarációs parancsok esetén jól használható. +Például a \verb|\tiny| parancs így lett besorolva a listába: +\begin{examplelst} +\huazignorecmd{\tiny} +\end{examplelst} +Ugyanez alkalmazható abban az esetben is, ha a \verbinline|!<parancs>!|-nak nincs csillagos verziója sem opciója, továbbá az első \verb|{ }| jelek közé írt argumentuma a figyelembe vett szöveg. Például a \verb|\textrm| ilyen, ezért így lett besorolva: +\begin{examplelst} +\huazignorecmd{\textrm} +\end{examplelst} -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 a \texttt{shadowtext} csomag \verb|\shadowtext| parancsa nincs a listában, ezért a következő kód eredménye hibás lesz: +A \texttt{shadowtext} csomag \verb|\shadowtext| parancsa nincs a listában, ezért a következő kód eredménye hibás lesz: \begin{examplelst} \newcommand{\osztaly}{X.A~osztály} \az{\shadowtext{\osztaly}} \end{examplelst} -A listára az +A listára \begin{examplelst} -\AddToHook{huaz}{\def\shadowtext{}} +\huazignorecmd{\shadowtext} \end{examplelst} -módon vehető fel. Ezzel a névelő megállapítása során a \verb|\shadowtext| parancs nem jelent semmit. Tehát a következő kód már megfelelően működik: +módon vehető fel, mert a \verb|\shadowtext| parancsnak sem opciója sem csillagos verziója nincs, továbbá egyetlen argumentuma a szöveg. +Tehát a következő kód már megfelelően működik: \begin{examplelst} -\AddToHook{huaz}{\def\shadowtext{}} +\huazignorecmd{\shadowtext} \newcommand{\osztaly}{X.A~osztály} \az{\shadowtext{\osztaly}} \end{examplelst} -Az előző eset a \texttt{huaz} kapocs nélkül így is megoldható: +Megjegyezzük, hogy az előző eset így is megoldható: \begin{examplelst} \newcommand{\osztaly}{X.A~osztály} \az*{\osztaly}~\shadowtext{\osztaly} \end{examplelst} -Ha a \verb|\shadowtext| az \verb|\osztaly| definíciójában szerepel, akkor a \texttt{huaz} kapocs használata nem kerülhető meg: +Ha a \verb|\shadowtext| az \verb|\osztaly| definíciójában szerepel, akkor nem tudjuk megkerülni a \verb|\huazignorecmd| használatát az előző módon: \begin{examplelst} -\AddToHook{huaz}{\def\shadowtext{}} +\huazignorecmd{\shadowtext} \newcommand{\osztaly}{\shadowtext{X.A~osztály}} \az{\osztaly} \end{examplelst} -Ha a formázó parancs erős, akkor a \texttt{huaz} kapocs használata szintén nem kerülhető meg. Például + +\paragraph{2. eset} +% +Ha az \verbinline|!<opció>!| \texttt{0}, akkor a \verbinline|!<parancs>!| és az utána található első \verb|{| jelig található kódok mindegyike ignorálódik a névelő megállapításakor. +Tehát például +\begin{examplelst} +\huazignorecmd[0]{\foo} +\end{examplelst} +esetén a +\begin{examplelst} +\foo{...} \foo*{...} \foo[...]{...} \foo*[...]{...} +\end{examplelst} +kódokban a +\begin{examplelst} +\foo \foo* \foo[...] \foo*[...] +\end{examplelst} +mindegyike figyelmen kívül lesz hagyva a névelő megállapításakor. +A \verb|\makebox| például +\begin{examplelst} +\huazignorecmd[0]{\makebox} +\end{examplelst} +módon lett besorolva, ezért például +\begin{examplelst} +\makebox[2cm][s]{szöveg} +\end{examplelst} +esetén a \verb|\makebox[2cm][s]| rész törlődik és csak a ,,szöveg'' lesz figyelembe véve. + + +Ha a formázó parancs erős, akkor a \verb|\huazignorecmd| használata nem kerülhető meg még akkor sem, ha a listán szereplő parancsokkal épül fel. +Például \begin{examplelst} -\AddToHook{huaz}{\def\myfont{}} -\DeclareRobustCommand{\myfont}[1]{{\usefont{T1}{yv1d}{m}{n}#1}} -\renewcommand{\thesection}{\myfont{\arabic{section}}} +\huazignorecmd[0]{\myfont} +\DeclareRobustCommand{\myfont}[2][cmr]{{\usefont{T1}{#1}{m}{n}#2}} +\renewcommand{\thesection}{\myfont[yv1d]{\arabic{section}}} \section{Cím}\label{sec} \aref{sec} \end{examplelst} +Ebben a példában nem hagyható el a \texttt{[0]}, mert a \verb|\myfont|-nak van opciója. + +\paragraph{3. eset} +% +Ha az \verbinline|!<opció>!| \texttt{1} és \texttt{9} közötti egész szám, akkor a \verb|\huazignorecmd| parancs a névelő megállapítása során a \verbinline|!<parancs>!|-ot és az utána következő első \verb|{| jelig tartó kódokat ignorálja, továbbá ezután az első \verbinline|!<opció>!| darab \verb|{ }| jelek közé írt részeket szintén figyelmen kívül hagyja. +Tehát például +\begin{examplelst} +\huazignorecmd[1]{\foo} +\end{examplelst} +esetén a +\begin{examplelst} +\foo{...} \foo*{...} \foo[...]{...} \foo*[...]{...} +\end{examplelst} +kódok mindegyike figyelmen kívül lesz hagyva a névelő megállapításakor. +Például a \verb|\textcolor| parancs +\begin{examplelst} +\huazignorecmd[1]{\textcolor} +\end{examplelst} +módon lett a listába sorolva, így a +\begin{examplelst} +\textcolor[RGB]{20,30,40}{szöveg} +\end{examplelst} +parancsban a +\begin{examplelst} +\textcolor[RGB]{20,30,40} +\end{examplelst} +kódrész ignorálva lesz, és csak a ,,\texttt{szöveg}'' kerül vizsgálatra a névelő megállapításakor. +Ha a +\begin{examplelst} +\huazignorecmd[2]{\foo} +\end{examplelst} +parancsot használjuk, akkor a +\begin{examplelst} +\foo{...}{...} \foo*{...}{...} +\foo[...]{...}{...} \foo*[...]{...}{...} +\end{examplelst} +kódok mindegyike figyelmen kívül lesz hagyva a névelő megállapításakor. +Például a \verb|\fontsize| parancs +\begin{examplelst} +\huazignorecmd[2]{\fontsize} +\end{examplelst} +módon lett a listába sorolva, így a +\begin{examplelst} +\fontsize{14pt}{14pt} +\end{examplelst} +parancs figyelmen kívül lesz hagyva a névelő megállapításakor. + + + + +\subsection{A kereszthivatkozások kifejthető verziói} + +Ha a szöveg elején kereszthivatkozás van, akkor a határozott névelő megállapítása előtt a kereszthivatkozás parancsát le kell cserélni annak kifejthető verziójára. +A \texttt{refcount} csomag két ilyen parancsot definiál: +A \verb|\getrefnumber| a \verb|\ref|, \verb|\ref*|, \verb|\eqref|, \verb|\refeq| esetén +használható, a \verb|\getpagerefnumber| pedig a \verb|\pageref| és \verb|\pageref*| esetén. + +\commandinline|\huazrefcmd{!<parancs>!}| + +Ezzel a paranccsal elérhető, hogy a \verbinline|!<parancs>!| helyére beírt parancsot és annak csillagos verzióját a határozott névelő megállapítása során a \verb|\getrefnumber| paranccsal helyettesítse. + +A \verb|\ref|, \verb|\ref*|, \verb|\eqref|, \verb|\refeq| parancsok így lettek besorolva a \huaz\ csomagban: +\begin{examplelst} +\huazrefcmd{\ref} +\huazrefcmd{\eqref} +\huazrefcmd{\refeq} +\end{examplelst} +Ezzel már az \verb|\eqref*| és \verb|\refeq*| is működne, de ezek a csillagos verziók nincsenek definiálva a csillag nélküli verziókat definiáló \texttt{amsmath} illetve \texttt{mathtools} csomagokban. Ezt mi is pótolhatjuk, amire \aref{subsec-eqref}.~alszakaszban láthatunk megoldást. + +\commandinline|\huazpagerefcmd{!<parancs>!}| + +Ezzel a paranccsal elérhető, hogy a \verbinline|!<parancs>!| helyére beírt parancsot és annak csillagos verzióját a határozott névelő megállapítása során a \verb|\getpagerefnumber| paranccsal helyettesítse. + +A \verb|\pageref| és \verb|\pageref*| parancsok így lettek besorolva a \huaz\ csomagban: +\begin{examplelst} +\huazrefcmd{\pageref} +\end{examplelst} + +Ezekre láthatunk egy alkalmazást \aref{subsec-autoref}.~alszakaszban. + +\subsection{Az \texttt{\textbackslash autoref} és \texttt{\textbackslash autopageref} parancsok}\label{subsec-autoref} + +Ezeket a parancsokat a \texttt{hyperref} csomag definiálja. +Ezekkel hivatkozva egy címkére, nem csak a sorszám, hanem a sorszámozott egység neve (szakasz, alszakasz, oldal, stb.) is megjelenik link formájában. +Ezeknek léteznek csillagos verzióik is, melyeknek ugyanaz a hatásuk, de nem generálnak linket. + +Magyar nyelvű dokumentumokban nem lehet közvetlenül alkalmazni, mert az angol szabály szerint ,,1.~szakasz'' helyett ,,szakasz~1'' lesz az eredménye a következőnek: +\begin{examplelst} +\section{Cím}\label{sec} +\autoref*{sec} +\end{examplelst} +Ezért a használatához először ,,magyarosítani kell'' a következő kóddal a \texttt{hyperref} betöltése után a preambulumban: +\begin{examplelst} +\usepackage{regexpatch} +\makeatletter +\xpatchcmd{\HyRef@autosetref}{\HyRef@currentHtag}{}{}{} +\xpatchcmd{\HyRef@autosetref}{\null} + {\null.~\HyRef@currentHtag}{}{} +\xpatchcmd*{\HyRef@testreftype}{~}{}{}{} +\makeatother +\RenewDocumentCommand{\autopageref}{sm}{% + \IfBooleanTF{#1} + {\pageref*{#2}.~oldal} + {\hyperref[{#2}]{\pageref*{#2}.~oldal}}} +\end{examplelst} +Ezután már ,,1.~szakasz'' lesz az eredmény. + +Ha az így módosított \verb|\autoref|, \verb|\autoref*|, \verb|\autopageref|, \verb|\autopageref*| parancsokhoz automatikus határozott névelőt szeretnénk, akkor írjuk be a következőket a \huaz\ betöltése után: +\begin{examplelst} +\huazrefcmd{\autoref} +\huazpagerefcmd{\autopageref} +\end{examplelst} +Ezután a következő kód eredménye ,,Az 1. szakasz az 1. oldalon kezdődik.'' lesz: +\begin{examplelst} +\section{Cím}\label{sec} +\Az{\autoref*{sec}} \az{\autopageref*{sec}on} kezdődik. +\end{examplelst} + +\subsection{Az \texttt{\textbackslash eqref*} és \texttt{\textbackslash refeq*} parancsok}\label{subsec-eqref} + +A \verb|\ref| és \verb|\pageref| parancsoknak definiált a csillagos verziójuk is, amely alapesetben nem különbözik a normál verziótól, de a \texttt{hyperref} csomaggal használva a csillag nélküli verzió linket generál, míg a csillagos nem. + +Az \texttt{amsmath} csomag által definiált \verb|\eqref| a \texttt{hyperref} csomaggal együtt használva szintén generál linket, de ennek nincs definiálva csillagos verziója, így ekkor a link nélküli verzió nem érhető el közvetlenül. +További gond az ilyen link nélküli egyenlethivatkozás előtti automatikus névelő megadása. + +Négy lehetséges megoldást mutatunk. + +\begin{enumerate} +\item +A \texttt{NoHyper} környezet használatával: +\begin{examplelst} +\begin{equation}\label{eq} +a=b +\end{equation} +\emph{Lásd \begin{NoHyper}\aeqref{eq}\end{NoHyper} + egyenletet!} +\end{examplelst} + +\item +Az \verb|\az*| parancs használatával: +\begin{examplelst} +\begin{equation}\label{eq} +a=b +\end{equation} +\emph{Lásd \az*{\ref{eq}} \textup{(\ref*{eq})} egyenletet!} +\end{examplelst} + +\item +Az \verb|\eqrefstyle| parancs definiálásával és a \verb|\huazignorecmd| paranccsal, amely az előzőnek egy kényelmesebben használható verziója: +\begin{examplelst} +\makeatletter +\newcommand{\eqrefstyle}[1]{\textup{\tagform@{#1}}} +\makeatother +\huazignorecmd{\eqrefstyle} + +\begin{equation}\label{eq} +a=b +\end{equation} +\emph{Lásd \az{\eqrefstyle{\ref*{eq}}} egyenletet!} +\end{examplelst} + +\item +Ebben az esetben definiáljuk az \verb|\eqref| csillagos verzióját (az \texttt{amsmath} betöltése után), amely nem generál linket a \texttt{hyperref} csomaggal együtt használva: +\begin{examplelst} +\makeatletter +\DeclareDocumentCommand{\eqref}{ s m }{% + \textup{\tagform@{% + \IfBooleanTF{#1}{\ref*{#2}}{\ref{#2}}% + }}% +} +\makeatother +\end{examplelst} +Ezután a +\begin{examplelst} +\begin{equation}\label{eq} +a=b +\end{equation} +\emph{Lásd \az{\eqref*{eq}} egyenletet!} +\end{examplelst} +kód helyes eredményt ad, mert a \huaz\ csomagban nem csak az \verb|\eqref|, hanem az \verb|\eqref*| is a kifejthető \verb|\getrefnumber| parancsra lesz kicserélve a határozott névelő meghatározásánál. +\end{enumerate} + +Ugyanez a probléma a \texttt{mathtools} csomag által definiált \verb|\refeq| és a \texttt{hyperref} csomag együttes használata esetében. + +Az előző négy megoldás mindegyikét lehet alkalmazni megfelelő módosításokkal: +\begin{enumerate} +\item +A \texttt{NoHyper} környezet használatával: +\begin{examplelst} +\begin{equation}\label{eq} +a=b +\end{equation} +\emph{Lásd \begin{NoHyper}\arefeq{eq}\end{NoHyper} + egyenletet!} +\end{examplelst} + +\item +Az \verb|\az*| parancs használatával: +\begin{examplelst} +\begin{equation}\label{eq} +a=b +\end{equation} +\emph{Lásd \az*{\ref{eq}} \textup{\ref*{eq}} egyenletet!} +\end{examplelst} + +\item +A \verb|\refeqstyle| parancs definiálásával: +\begin{examplelst} +\newcommand{\refeqstyle}[1]{\textup{#1}} + +\begin{equation}\label{eq} +a=b +\end{equation} +\emph{Lásd \az{\refeqstyle{\ref*{eq}}} egyenletet!} +\end{examplelst} +Itt nincs szükség a \verb|\huazignorecmd{\refeqstyle}| használatára. + +\item +A \verb|\refeq*| parancs definiálásával: +\begin{examplelst} +\DeclareDocumentCommand{\refeq}{ s m }{% + \textup{% + \IfBooleanTF{#1}{\ref*{#2}}{\ref{#2}}% + }% +} +\end{examplelst} +Ezután a +\begin{examplelst} +\begin{equation}\label{eq} +a=b +\end{equation} +\emph{Lásd \az{\refeq*{eq}} egyenletet!} +\end{examplelst} +kód helyes eredményt ad, mert a \huaz\ csomagban nem csak a \verb|\refeq|, hanem a \verb|\refeq*| is a kifejthető \verb|\getrefnumber| parancsra lesz kicserélve a határozott névelő meghatározásánál. +\end{enumerate} + +\subsection{Parancsok átdefiniálása a határozott névelő megállapításakor} + +A \verb|\huazignorecmd|, \verb|\huazrefcmd| és \verb|\huazpagerefcmd| parancsok is a címben szereplő funkciót látják el, de speciális esetekben. +Ezek általánosított verziója a következő parancs: + +\commandinline|\huazdefcmd{!<átdefiniáló kód>!}| + +Az \verbinline|!<átdefiniáló kód>!| helyére egy parancsnak azt a definícióját kell írni, amelynek a határozott névelő megállapítása során kell érvényesülnie. +Például a következő kódokban az egymást követő sorok ekvivalensek: +\begin{examplelst} +\huazignorecmd{\tiny} +\huazdefcmd{\def\tiny{}} +\end{examplelst} + +\begin{examplelst} +\huazignorecmd[0]{\makebox} +\huazdefcmd{\def\makebox#1#{}} +\end{examplelst} + +\begin{examplelst} +\huazignorecmd[1]{\textcolor} +\huazdefcmd{\def\textcolor#1#{\@gobble}} +\end{examplelst} + +\begin{examplelst} +\huazrefcmd{\ref} +\huazdefcmd{\def\ref#1#{\getrefnumber}} +\end{examplelst} + +Alkalmazásként tekintsük a következő kódot, amely hibával fog fordulni: +\begin{examplelst} +\newcommand{\tananyag}{\LaTeX\ alapjai} +A mai óra anyaga \az{\tananyag}. +\end{examplelst} +A megfelelő eredményhez a \verb|\LaTeX| parancsot át kell definiálni a névelő megállapításakor: +\begin{examplelst} +\huazdefcmd{\def\LaTeX{latex}} +\newcommand{\tananyag}{\LaTeX\ alapjai} + +A mai óra anyaga \az{\tananyag}. +\end{examplelst} \end{document}
\ No newline at end of file |