
Как сделать заглавной первую букву КАЖДОГО слова в глоссарии с помощью glossaries-extra
пакета?
Я наткнулся наэта темано он использует glossaries
пакет.
Я тоже пробовал \glsentrytitlecase{<label>}{long}
, но не вышло
- сделать глоссарий гиперссылкой
- включите глоссарий в скобки в конце, например, (ES) в MWE ниже
По сути, я хочу сделать то же самое \Gls
, но сделать заглавной первую букву КАЖДОГО слова, а не только первое слово.
МВЭ:
\documentclass[a4paper,12pt]{article}
\usepackage[acronym]{glossaries-extra}
\setabbreviationstyle[acronym]{long}
\newacronym
[
description={Evolutionary Strategies},
longplural={evolutionary strategies}
]
{es}{ES}{evolutionary strategy}
\makeglossaries
\begin{document}
\printglossary[type=acronym,title={List of Acronyms}]
\glsentrytitlecase{es}{long}.
\glspl{es}.
\Glspl{es}.
\glsentrytitlecase{es}{longpl}.
\end{document}
Обновлять:
\documentclass[a4paper,12pt]{article}
\usepackage[acronym,automake]{glossaries-extra}
\makeatletter
\newrobustcmd*{\myGls}{\@gls@hyp@opt\@myGls}
\newcommand*{\@myGls}[2][]{%
\new@ifnextchar[{\@myGls@{#1}{#2}}{\@myGls@{#1}{#2}[]}%
}
\def\@myGls@#1#2[#3]{%
\glsdoifexists{#2}%
{%
\let\do@gls@link@checkfirsthyper\@gls@link@checkfirsthyper
\let\glsifplural\@secondoftwo
\let\glscapscase\@secondofthree
\def\glscustomtext{%
{%
\ecapitalisewords{\glsentrylong{#2}}#3\space%
\firstacronymfont(\glsentryshort{#2})}%
}
\def\glsinsert{#3}%
\def\@glo@text{\csname gls@\glstype @entryfmt\endcsname}%
\@gls@link[#1]{#2}{\@glo@text}%
\ifKV@glslink@local
\glslocalunset{#2}%
\else
\glsunset{#2}%
\fi
}%
\glspostlinkhook
}
\newrobustcmd*{\myGlspl}{\@gls@hyp@opt\@myGlspl}
\newcommand*{\@myGlspl}[2][]{%
\new@ifnextchar[{\@myGlspl@{#1}{#2}}{\@myGlspl@{#1}{#2}[]}%
}
\def\@myGlspl@#1#2[#3]{%
\glsdoifexists{#2}%
{%
\let\do@gls@link@checkfirsthyper\@gls@link@checkfirsthyper
\let\glsifplural\@firstoftwo
\let\glscapscase\@secondofthree
\def\glscustomtext{%
{%
\ecapitalisewords{\glsentrylongpl{#2}}#3\space%
\firstacronymfont(\glsentryshortpl{#2})}%
}
\def\glsinsert{#3}%
\def\@glo@text{\csname gls@\glstype @entryfmt\endcsname}%
\@gls@link[#1]{#2}{\@glo@text}%
\ifKV@glslink@local
\glslocalunset{#2}%
\else
\glsunset{#2}%
\fi
}%
\glspostlinkhook
}
\makeatother
\setabbreviationstyle[acronym]{long}
\newacronym
[
description=Evolutionary Strategy,
longplural=evolutionary strategies
]
{es}{ES}{evolutionary strategy}
\makeglossaries
\begin{document}
\printglossary[type=acronym,title={List of Acronyms}]
textbf{Singular:}
blablbla \gls{es}.
blablbla \glsxtrfull{es}.
blablbla \Gls{es}.
blablbla \Glsxtrfull{es}.
blablbla \myGls{es}.
blablbla \glsentrytitlecase{es}{long}.
\vspace*{1cm}
\textbf{Plural:}
blablbla \glspl{es}.
blablbla \glsxtrfullpl{es}.
blablbla \Glspl{es}.
blablbla \Glsxtrfullpl{es}.
blablbla \myGlspl{es}.
blablbla \glsentrytitlecase{es}{longpl}.
\end{document}
решение1
Это решение. Обратите внимание на комментарии в коде. Если вы хотите, чтобы второе использование отображало краткую форму, раскомментируйте эти комментарии. В противном случае он всегда будет отображать полную форму. Добавьте, \myGlspl
чтобы иметь дело с формой множественного числа.
\documentclass[a4paper,12pt]{article}
\usepackage[hidelinks]{hyperref}
\usepackage[acronym,automake]{glossaries-extra}
\makeatletter
\newrobustcmd*{\myGls}{\@gls@hyp@opt\@myGls}
\newcommand*{\@myGls}[2][]{%
\new@ifnextchar[{\@myGls@{#1}{#2}}{\@myGls@{#1}{#2}[]}%
}
\def\@myGls@#1#2[#3]{%
\glsdoifexists{#2}%
{%
\let\do@gls@link@checkfirsthyper\@gls@link@checkfirsthyper
\let\glsifplural\@secondoftwo
\let\glscapscase\@secondofthree
\def\glscustomtext{%
\ifglsused{#2}
{\acronymfont\glsentryshort{#2}#3}
{%
\ecapitalisewords{\glsentrylong{#2}}#3\space%
\firstacronymfont(\glsentryshort{#2})}%
}%
\def\glsinsert{#3}%
\def\@glo@text{\csname gls@\glstype @entryfmt\endcsname}%
\@gls@link[#1]{#2}{\@glo@text}%
\ifKV@glslink@local
\glslocalunset{#2}%
\else
\glsunset{#2}%
\fi
}%
\glspostlinkhook
}
\newrobustcmd*{\myGlspl}{\@gls@hyp@opt\@myGlspl}
\newcommand*{\@myGlspl}[2][]{%
\new@ifnextchar[{\@myGlspl@{#1}{#2}}{\@myGlspl@{#1}{#2}[]}%
}
\def\@myGlspl@#1#2[#3]{%
\glsdoifexists{#2}%
{%
\let\do@gls@link@checkfirsthyper\@gls@link@checkfirsthyper
\let\glsifplural\@firstoftwo
\let\glscapscase\@secondofthree
\def\glscustomtext{%
\ifglsused{#2}%
{\acronymfont\glsentryshortpl{#2}#3}
{%
\ecapitalisewords{\glsentrylongpl{#2}}#3\space%
\firstacronymfont(\glsentryshortpl{#2})}%
}%
\def\glsinsert{#3}%
\def\@glo@text{\csname gls@\glstype @entryfmt\endcsname}%
\@gls@link[#1]{#2}{\@glo@text}%
\ifKV@glslink@local
\glslocalunset{#2}%
\else
\glsunset{#2}%
\fi
}%
\glspostlinkhook
}
\makeatother
\setabbreviationstyle[acronym]{long-short}
\newacronym{tla}{TLA}{three lettered acronym}
\makeglossaries
\begin{document}
\printglossary[type=acronym,title={List of Acronyms}]
\myGls{tla}
\myGlspl{tla}
\Gls{tla}
\end{document}