glossaries
我在文档中使用包,并且有一些长期名称。这破坏了我的布局。我尝试应用:
\setlength{\glspagelistwidth}{0.3\linewidth}
但根本不起作用。如果我使用:
\setlength{\glsdescwidth}{0.3\linewidth}
它可以在描述侧工作,但我需要减少术语侧的宽度,而不是描述侧的宽度。如果我使用:
\setlength{\glsdescwidth}{0.7\linewidth}
它也不会给我预期的结果。
我怎样才能解决这个问题?
我能得到的最小工作示例(我试图尽可能接近我的情况):
\documentclass{book}
\usepackage{lipsum}
\usepackage[utf8]{inputenc}
\usepackage[acronym]{glossaries}
\renewcommand*{\glossaryentrynumbers}[1]{}
\newcommand{\dictentry}[2]{%
\newglossaryentry{#1}{name={#1},description={#2}}%
\glsadd{#1}%
}
\newcommand{\dictentryspec}[3]{%
\newglossaryentry{#1}{name={#2},description={#3},sort={#1}}%
\glsadd{#1}%
}
\newcommand{\acronentry}[2]{%
\newglossaryentry{acro#1}{type=\acronymtype, name={#1},description={#2}, first={#2 (#1)}}%
\glsadd{acro#1}%
}
\makeglossaries
\setlength{\glsdescwidth}{\dimexpr\linewidth-10\tabcolsep}
\renewcommand{\glsnamefont}[1]{\textbf{#1}}
\glstoctrue
\newglossarystyle{clong}{%
\glossarystyle{long}
\renewcommand{\glsgroupskip}{}
}
\begin{document}
My document.
\acronentry{AD}{Sample 1}
\dictentry{really long or long long long long term 1}{\lipsum[1]}
\dictentryspec{really long or long long long long term 2 in place}{used when I have é or â in glossaries}{\lipsum[1]}
\cleardoublepage
\renewcommand*{\arraystretch}{1.5}
\setlength{\glspagelistwidth}{0.3\linewidth}
\printglossary[type=\acronymtype,style=clong]
\cleardoublepage
\printglossary[type=main,style=clong]
\cleardoublepage
\end{document}
答案1
您正在使用在 glossary-long.sty 文件中定义的样式 long(可以在 /tex/latex/glossaries 中的 glossaries 文件夹中找到)
它将风格(部分)定义为
\newglossarystyle{long}{%
\renewenvironment{theglossary}%
{\begin{longtable}{lp{\glsdescwidth}}}%
{\end{longtable}}%
\renewcommand*{\glossaryheader}{}%
.
.
.
如您所见,描述宽度确实是p
具有宽度的列,\glsdescwidth
但第一列是一个简单的l
列。
定义新样式非常简单,只需复制定义并创建自己的样式即可(您已经这样做了,基本上删除了组跳过,这只是一个扩展)。这应该可以解决问题
\documentclass{article}
\usepackage[nomain,acronym]{glossaries}
\makeglossaries
\newglossarystyle{clong}{%
\renewenvironment{theglossary}%
{\begin{longtable}{p{.3\linewidth}p{\glsdescwidth}}}%
{\end{longtable}}%
\renewcommand*{\glossaryheader}{}%
\renewcommand*{\glsgroupheading}[1]{}%
\renewcommand*{\glossaryentryfield}[5]{%
\glstarget{##1}{##2} & ##3\glspostdescription\space ##5\\}%
\renewcommand*{\glossarysubentryfield}[6]{%
& \glstarget{##2}{\strut}##4\glspostdescription\space ##6\\}%
%\renewcommand*{\glsgroupskip}{ & \\}%
}
\usepackage{lipsum}
\newacronym{test}{Some very very long text that just wont break}{\lipsum[1]}
\begin{document}
\glsaddall
\printglossary[type=\acronymtype,style=clong]
\end{document}
打印 glossay 两次,第一次使用 long,第二次使用重新定义的 clong 样式,结果如下: