我在报告中使用该acronym
包来处理首字母缩略词、符号和常量。我希望常量列表与其他两个列表略有不同。我想使用宏来\acroextra{}
添加常量的值并将它们打印在第三列中。
目前我有这样的东西:
\documentclass[10pt]{report}
\usepackage[utf8]{inputenc}
\usepackage[]{acronym}
\begin{document}
\large \textbf{Symbols}
\begin{acronym}[longest]
\acro{lam}[$\lambda$]{wavelength}
\acro{temp}[$T$]{Temperature}
\end{acronym}
\large \textbf{Constants}
\begin{acronym}[longest]
\acro{c}[$c$]{speed of light \acroextra{299 792 458 m/s}}
\acro{sig}[$\sigma$]{Stefan–Boltzmann constant \acroextra{$5.670367 10^{-8}$ W/(m$^2$K$^4$)}}
\end{acronym}
\vspace{1in}
Some text and acro calls
\end{document}
得出:
我希望结果是这样的:
我可以使用环境中的第二个宽度 ( \begin{acronym}[longest short][longest long]
) 或其他东西来使其工作吗?如果更简单的话,值也可以右对齐。
答案1
您可以使用\makebox[width][position]{text}
命令。框包含您的常量名称。框的宽度由可选参数指定width
。您可以使用(flushleft)、 (flushright)...position
指定框内文本的位置。值可以放在框后面。为了更容易处理,我将框放在一个新命令中,如下所示:l
r
\newcommand{\acrosecondcolumn}[1]{
\acroextra{\makebox[55mm][l]{#1}}
}
示例条目:
\acro{c}[A]{\acrosecondcolumn{B}C}
1.列:A ---空白--- 2.列:B ---空白--- 3.列:C
解决方案:
梅威瑟:
\documentclass[10pt]{report}
\usepackage[utf8]{inputenc}
\usepackage[]{acronym}
\newcommand{\acrosecondcolumn}[1]{
\acroextra{\makebox[55mm][l]{#1}}
}
\begin{document}
\large \textbf{Symbols}
\begin{acronym}[longest]
\acro{lam}[$\lambda$]{wavelength}
\acro{temp}[$T$]{Temperature}
\end{acronym}
\large \textbf{Constants}
\begin{acronym}[longest]
\acro{c}[A]{\acrosecondcolumn{B}C}
\acro{c}[$c$]{\acrosecondcolumn{speed of light}299 792 458 m/s}
\acro{sig}[$\sigma$]{\acrosecondcolumn{Stefan–Boltzmann constant}$5.670367 10^{-8}$ W/(m$^2$K$^4$)}
\end{acronym}
\vspace{1in}
Some text and acro calls
\end{document}
答案2
一个带有包的解决方案,比考虑它的可配置性和功能glossaries
更强大一点。acronym
这里symbolvalue
定义了一个具有特殊键的新词汇表,它是我的答案的变体。这里回答类似的问题。
确保按此顺序运行(假设文档名为foo.tex
)
- pdflatex foo
- 制作词汇表 foo
- pdflatex foo
\documentclass{book}
\usepackage{siunitx}
\usepackage[nomain]{glossaries} % use glossaries-package
\setlength{\glsdescwidth}{15cm}
\newglossary[slg]{symbolslist}{syi}{syg}{Symbolslist} % create add. symbolslist
\glsaddkey{symbolvalue}{\glsentrytext{\glslabel}}{\glsentrysymbolvalue}{\GLsentrysymbolvalue}{\glssymbolvalue}{\Glssymbolvalue}{\GLSsymbolvalue}
\glssetnoexpandfield{symbolvalue}
\makeglossaries % activate glossaries-package
% ==== EXEMPLARY ENTRY FOR SYMBOLS LIST =========================================
\newglossaryentry{symb:Pi}{name=\ensuremath{\pi},
description={Geometrical symbol},
symbolvalue={},
type=symbolslist
}
\newglossaryentry{planck}{
name=\ensuremath{h},
description={Planck's constant},
symbolvalue={\SI{6,6d-34}{\joule\second}},
type=symbolslist
}
\newglossaryentry{lightspeed}{
name=\ensuremath{c},
description={Speed of light},
symbolvalue={\SI{299792432}{\meter/\second}},
type=symbolslist
}
\newglossarystyle{symbsymbolvaluelong}{%
\setglossarystyle{long3col}% base this style on the list style
\renewenvironment{theglossary}{% Change the table type --> 3 columns
\begin{longtable}{lp{0.6\glsdescwidth}>{\centering\arraybackslash}p{2cm}}}%
{\end{longtable}}%
\renewcommand*{\glossaryheader}{% Change the table header
\bfseries Sign & \bfseries Description & \bfseries Value \\
\hline
\endhead}
\renewcommand*{\glossentry}[2]{% Change the displayed items
\glstarget{##1}{\glossentryname{##1}} %
& \glossentrydesc{##1}% Description
& \glssymbolvalue{##1} \tabularnewline
}
}
\begin{document}
\glsaddall
\printglossary[type=symbolslist,style=symbsymbolvaluelong] % list of symbols
\end{document}