
我正在嘗試在 -package 的幫助下自動化方程式的描述表glossaries
。我已經找到了這問題,但一方面它對我不起作用,另一方面它看起來相當複雜(與我當前的程式碼相比)。
這是我到目前為止所擁有的:
\documentclass[parskip=half]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[nomain, symbols]{glossaries}
\usepackage{blindtext}
\usepackage{etoolbox}
\usepackage{multicol}
% \usepackage{showframe}
\newglossaryentry{alpha}{name={Alpha}, symbol={\ensuremath{\alpha}}, description={first symbol}}
\newglossaryentry{beta}{name={Beta}, symbol={\ensuremath{\beta}}, description={second symbol}}
\newglossaryentry{gamma}{name={Gamma}, symbol={\ensuremath{\gamma}}, description={third symbol}}
\makeglossaries
\newcommand{\addVarDesc}[1]{
\renewcommand*\do[1]{\glsadd{##1}\makebox[0.5cm][r]{\glssymbol{##1}} ${}={}$ \glsname{##1}\\}
\noindent with:\quad%
\begin{minipage}[t]{.9\linewidth}
\begin{multicols}{2}
\docsvlist{#1}
\end{multicols}
\end{minipage}\par\medskip
}
\newcommand{\addVarDescTab}[1]{
\renewcommand*\do[1]{\glsadd{##1}\glssymbol{##1} & \glsname{##1}\\}
\noindent with:\quad%
\begin{tabular}[t]{l@{${}={}$}l}
\docsvlist{#1}
\end{tabular}\par\medskip
}
\begin{document}
\printglossaries
\section{With multicols}
\blindtext[1]
\begin{equation}
\alpha = \beta + \gamma
\end{equation}
\addVarDesc{alpha, beta, gamma}
\blindtext[2]
\section{With tabular}
\blindtext[1]
\begin{equation}
\alpha = \beta + \gamma
\end{equation}
\addVarDescTab{alpha, beta, gamma}
\blindtext[2]
\end{document}
有了這些結果:
正如您所看到的,多協變體完全放錯了地方。此外,均勻地對齊條目也更加困難。但對於這個版本,我喜歡列數的靈活性。
而表格版本在項目對齊方面對我來說似乎更清晰。然而我浪費了更多的水平空間。
您對如何改善外觀有什麼想法嗎?我想到的一件事是將桌子並排分成兩張桌子。但我不知道如何用\docsvlist
命令來實現這一點。
任何想法都受到高度讚賞!
答案1
我會將描述保留在顯示器內,以避免方程式和描述之間出現過多的空間。
另外,我們從左到右閱讀(英文)。將有可能獲得
alpha gamma
beta
但我不願意這麼做。
我用它解決了expl3
這個問題,它有很多非常方便的功能。首先,我將清單儲存在一個可以與項目索引映射在一起的序列中,這樣我就可以決定是否發出問題\\
(在行的末尾)或&
將項目新增到儲存下一個主體的變數中tabular
。
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[nomain, symbols]{glossaries}
\usepackage{xparse}
\usepackage{lipsum}
\newglossaryentry{alpha}{
name={Alpha},
symbol={\ensuremath{\alpha}},
description={first symbol}
}
\newglossaryentry{beta}{
name={Beta},
symbol={\ensuremath{\beta}},
description={second symbol}
}
\newglossaryentry{gamma}{
name={Gamma},
symbol={\ensuremath{\gamma}},
description={third symbol}
}
\makeglossaries
\ExplSyntaxOn
\NewDocumentCommand{\addVarDesc}{O{2}m}
{% #1 = number of columns (default 2), #2 = list of keys
\wulle_vardesc:nn { #1 } { #2 }
}
\seq_new:N \l__wulle_vardesc_vars_seq
\tl_new:N \l__wulle_vardesc_body_tl
\cs_new_protected:Nn \wulle_vardesc:nn
{
\\\notag
\begin{minipage}{\displaywidth}
\seq_set_from_clist:Nn \l__wulle_vardesc_vars_seq { #2 }
\tl_clear:N \l__wulle_vardesc_body_tl
\seq_indexed_map_inline:Nn \l__wulle_vardesc_vars_seq
{
\tl_put_right:Nn \l__wulle_vardesc_body_tl
{
\glsadd{##2}\makebox[0.5cm][r]{\glssymbol{##2}} ${}={}$ \glsname{##2}
}
\int_compare:nTF { \int_mod:nn { ##1 } { #1 } = 0 }
{
\tl_put_right:Nn \l__wulle_vardesc_body_tl { \\ }
}
{
\tl_put_right:Nn \l__wulle_vardesc_body_tl { & }
}
}
with:~\begin{tabular}[t]{@{}*{#1}{l}@{}} \l__wulle_vardesc_body_tl \end{tabular}
\end{minipage}
}
\ExplSyntaxOff
\begin{document}
\printglossaries
\lipsum[1][1-3]
\begin{gather}
\alpha = \beta + \gamma
\addVarDesc{alpha, beta, gamma}
\end{gather}
\lipsum[2][1-3]
\begin{gather}
\alpha = \beta + \gamma
\addVarDesc[3]{alpha, beta, gamma}
\end{gather}
\lipsum[3][1-3]
\begin{gather}
\alpha = \beta + \gamma
\addVarDesc[1]{alpha, beta, gamma}
\end{gather}
\lipsum[4][1-3]
\end{document}