我正在撰写我的硕士论文,并且我有一个词汇表和一个首字母缩略词列表。
我用的是这个glossaries
包。
我希望首字母缩略词和词汇表条目具有不同的格式外观。
- 缩写:在列表中以粗体显示(在文本中以正常显示)
- 词汇表条目:在文本中和表格中均以斜体显示。
这是我的 MWE:
\documentclass{book}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{hyperref}
\usepackage[toc,acronym,section=section]{glossaries}
\makeglossaries
\glsenableentrycount
% GLOSSARY
\newglossaryentry{glscard}{
name=cardinality,
description={The number of elements in the specified set}}
% ACRONYMS
\newacronym{pc}{PC}{Personal Computer}
\newacronym{mesh}{MSH}{Mesh Secant Header}
% Custom Glossary Style
\newglossarystyle{mylong}{%
\setglossarystyle{long}%
\renewenvironment{theglossary}%
{\begin{longtable}[l]{@{}p{\dimexpr 2cm-\tabcolsep}p{0.8\hsize}}}
{\end{longtable}}%
\renewcommand{\glossentry}[2]{%
\glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
\glossentrydesc{##1}\glspostdescription\space
\ifnum\glsentryprevcount{##1}=1\relax
page
\else
pages
\fi
##2\tabularnewline
}%
}
% End custom Glossary Style
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
\printglossary[toctitle=Lexique,type=main, style=mylong]
\printglossary[toctitle=Acronyms,type=acronym, style=mylong]
\mainmatter
\chapter{Introduction}
\section{ab}
\gls{pc}; \gls{pc}; \gls{glscard}; \newpage
\gls{mesh}
\end{document}
我尝试了以下命令:
\renewcommand{\glsnamefont}[1]{\textbf{#1}}
, 从这里在列表中以粗体显示,但它适用于两个都列表、缩略词和词汇表。\renewcommand{\glstextformat}[1]{\textit{#1}}
从这里在文本中以斜体显示它们,但同样,它适用于首字母缩略词和词汇表条目。
有人知道如何解决这个混合问题吗?
编辑 :我添加了自定义词汇表样式(来自这里) 来控制它们在列表中的显示方式。
答案1
你是指这样的吗?
如果是,则可以通过 来实现\defglsentryfmt[type]{...}
,其中type
参数表示词汇表类型(缩写、主词汇表等),强制参数用于排版命令。
有关这方面的信息,请参阅glossaries-user
手册第 6.3 节。
\documentclass{book}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{hyperref}
\usepackage[toc,acronym,section=section]{glossaries}
\defglsentryfmt[acronym]{\textit{\glsentrytext{\glslabel}}}
\defglsentryfmt[main]{\textbf{\glsentrytext{\glslabel}}}
\makeglossaries
\glsenableentrycount
% GLOSSARY
\newglossaryentry{glscard}{
name=cardinality,
description={The number of elements in the specified set}}
% ACRONYMS
\newacronym{pc}{PC}{Personal Computer}
\newacronym{mesh}{MSH}{Mesh Secant Header}
\renewcommand{\acronymfont}[1]{\textit{#1}}
\setglossarystyle{list}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
\printglossary[toctitle=Lexique,type=main]
\printglossary[toctitle=Acronyms,type=acronym]
\mainmatter
\chapter{Introduction}
\section{ab}
\gls{pc}; \gls{pc}; \gls{glscard}; \newpage
\gls{mesh}
\end{document}
更新
glossary
对于斜体词汇表条目,还具有特殊的词汇表样式。
\documentclass{book}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{hyperref}
\usepackage[toc,acronym,section=section]{glossaries}
\defglsentryfmt[acronym]{\textbf{\glsgenacfmt}}
\defglsentryfmt[main]{\textit{\glsgenentryfmt}}
\makeglossaries
\glsenableentrycount
% GLOSSARY
\newglossaryentry{glscard}{
name=cardinality,
description={The number of elements in the specified set}}
% ACRONYMS
\newacronym{pc}{PC}{Personal Computer}
\newacronym{mesh}{MSH}{Mesh Secant Header}
\newglossarystyle{mylist}{%
\setglossarystyle{list}
\renewcommand*{\glossentry}[2]{%
\item[\normalfont\itshape \glsentryitem{##1}%
\glstarget{##1}{\glossentryname{##1}}]
\glossentrydesc{##1}\glspostdescription\space ##2}%
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
\printglossary[toctitle=Lexique,type=main,style=mylist]
\printglossary[toctitle=Acronyms,type=acronym,style=list]
\mainmatter
\chapter{Introduction}
\section{ab}
\gls{pc}; \gls{pc}; \gls{glscard}; \newpage
\gls{mesh}
\end{document}
答案2
有一个更简单的方法,如果你使用glossaries-extra
扩展包。这提供了一个额外的键category
(独立于type
),可用于定制不同类型的术语。
如果您没有指定category
,则默认为general
for \newglossaryentry
、abbreviation
for\newabbreviation
和acronym
for \newacronym
。
使用 来设置给定类别的属性\glssetcategoryattribute
。该textformat
属性控制术语在文本中的格式化方式。因此,要使所有带有 的术语都category=general
以斜体显示:
\glssetcategoryattribute{general}{textformat}{emph}
这将覆盖\glstextformat
具有此类别属性的条目。
属性glossnamefont
控制描述中名称的格式。它由内部使用\glossentryname
并覆盖默认的\glsnamefont
。因此,要使category=general
词汇表中所有带有名称的术语都以斜体显示:
\glssetcategoryattribute{general}{glossnamefont}{emph}
对于粗体术语也类似category=acronym
:
\glssetcategoryattribute{acronym}{glossnamefont}{textbf}
顺便说一句,glossaries-extra
还有一种更简单的方法,即在位置列表的开头插入“page”/“pages”:
\GlsXtrEnablePreLocationTag{page~}{pages~}
(使用条目计数并不可靠,因为您可能仅在单个页面上使用一个条目,但如果您在该页面上多次使用它,则计数将大于 1,因此您最终会得到单个位置的“页面”。)
toc
和包选项nopostdot
默认通过 实现glossaries-extra
。
完成 MWE:
\documentclass{book}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{hyperref}
\usepackage[acronym,section=section]{glossaries-extra}
\makeglossaries
\GlsXtrEnablePreLocationTag{page~}{pages~}
\glssetcategoryattribute{general}{textformat}{emph}
\glssetcategoryattribute{general}{glossnamefont}{emph}
\glssetcategoryattribute{acronym}{glossnamefont}{textbf}
% GLOSSARY
\newglossaryentry{glscard}{
name=cardinality,
description={The number of elements in the specified set}}
% ACRONYMS
\newacronym{pc}{PC}{Personal Computer}
\newacronym{mesh}{MSH}{Mesh Secant Header}
% Custom Glossary Style
\newglossarystyle{mylong}{%
\setglossarystyle{long}%
\renewenvironment{theglossary}%
{\begin{longtable}[l]{@{}p{\dimexpr 2cm-\tabcolsep}p{0.8\hsize}}}
{\end{longtable}}%
}
% End custom Glossary Style
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
\printglossary[toctitle=Lexique,type=main, style=mylong]
\printglossary[toctitle=Acronyms,type=acronym, style=mylong]
\mainmatter
\chapter{Introduction}
\section{ab}
\gls{pc}; \gls{pc}; \gls{glscard}; \newpage
\gls{mesh}
\end{document}
第一页:
文档正文(第 3 页):
(第 4 页)