符号列表?

符号列表?

我正在尝试制作一个与所示符号非常相似的符号列表这里

在此处输入图片描述

但是我在为我的列表的 2 页制作以此方式间隔的 2 列时遇到了一些麻烦。

有人能给我一个快速提示,告诉我如何实现这一点,同时只为这两页保留两列格式吗?

答案1

在以下示例中,数学符号和文本缩写用

\newmathsymb{<name>}{<symbol without $>}{<meaning>}
\newtextsymb{<abbreviation/name>}{<meaning>}
\newtextsymb[<name>]{<abbreviation>}{<meaning>}

例子:

\newmathsymb{approx}{\approx}{approximately equal to}
\newtextsymb{ABC}{Alphabet}
\newtextsymb[TeX]{\TeX}{The \TeX\ program}

用于<name>标识符号/缩写。它用在内部\label(用于页码)。

在文中,符号可以与

\symb{<name>}

因为符号代码自从声明以来就被记住了(它将在符号列表中被需要)。

对示例的备注。

  • 实现假定符号列表在符号声明之后打印。否则符号的代码必须存储在辅助文件中。

  • 符号列表设置在 包支持的跨列和跨页的表格中supertabular。 包longtable不支持双列模式。

  • 表格supertabular将每一列设置在单独的表格环境中。因此,列的宽度可能因列而异。因此,前两列的宽度通过使用p列来固定。假设第三列的标题(Page)大于最大页码。第一列的宽度是通过测量所有符号的宽度来计算的。第二列获得剩余的宽度。

  • \label当声明符号时,页码由 记住。

  • 第二列的第一行与符号对齐,底行与页码对齐。通过将所有列对齐在顶行来解决此问题。第二列的单元格设置两次以获得顶行和底行之间的差异。然后根据此差异降低页码。

  • 符号列表的行距不同,单元格内的行距较窄。这是通过不同的设置实现的\arraystretch

示例文件:

\documentclass[a4paper,12pt]{article}
\usepackage[
  hmargin=25mm,
]{geometry}
\usepackage{supertabular}
\usepackage{array}
\usepackage{amsmath}
\usepackage[T1]{fontenc}
\usepackage{textcomp}

\makeatletter
\newcommand*{\symb@list}{}
\newlength{\symb@maxwidth}
\newlength{\symb@meaning}
\newcommand*{\new@symb}[3]{%
  \@bsphack
  \g@addto@macro{\symb@list}{\symb@do{#1}{#2}{#3}}%
  \label{symb:#1}%
  \expandafter\gdef\csname symb:#1\endcsname{#2}%
  \begingroup
    \settowidth{\dimen@}{#2}%
    \ifdim\dimen@>\symb@maxwidth
      \global\symb@maxwidth=\dimen@
    \fi
  \endgroup
  \@esphack
}
\newcommand*{\newmathsymb}[3]{%
  \new@symb{#1}{\ensuremath{#2}}{#3}%
}
\newcommand*{\newtextsymb}{%
  \@dblarg\symb@newtext
}
\def\symb@newtext[#1]#2#3{%
  \new@symb{#1}{#2}{#3}%
}
\newcommand*{\symb}[1]{%
  \@ifundefined{symb:#1}{%
    \@latex@error{Symbol `#1' is undefined}\@ehc
  }{%
    \csname symb:#1\endcsname
  }%
}
% List of symbols
\newcommand*{\symb@head}[1]{\textbf{\large#1}}
\newcommand*{\printsymblist}{%
  \twocolumn[%
    \section*{%
      \centering
      List of Symbols, Abbreviations, and Notation%
    }%
  ]%  
  \thispagestyle{empty}% optional
  \renewcommand*{\arraystretch}{1.1}%
  \settowidth{\dimen@}{\symb@head{Symbol}}%
  \ifdim\dimen@>\symb@maxwidth
    \global\symb@maxwidth\dimen@
  \fi
  \setlength{\symb@meaning}{\linewidth}%
  \addtolength{\symb@meaning}{-\symb@maxwidth}%
  \settowidth{\dimen@}{\symb@head{Page}}%
  \addtolength{\symb@meaning}{-\dimen@}% 
  \addtolength{\symb@meaning}{-4\tabcolsep}%
  \tablehead{%
    \symb@head{Symbol} & \symb@head{Meaning} & \symb@head{Page}\\[.5ex]%
  }%
  \begin{supertabular}{@{}p{\symb@maxwidth}p{\symb@meaning}c@{}}%
    \symb@list
  \end{supertabular}%
  \clearpage
  \onecolumn
}
\newcommand*{\symb@do}[3]{%
  #2&%
  \sbox0{%
    \renewcommand*{\arraystretch}{1}%
    \begin{tabular}[t]{@{}p{\symb@meaning}@{}}%
      \raggedright
      #3%
    \end{tabular}%
  }%
  \sbox2{%
    \renewcommand*{\arraystretch}{1}%
    \begin{tabular}[b]{@{}b{\symb@meaning}@{}}%
      \raggedright
      #3%
    \end{tabular}%
  }%
  \usebox0 %
  \xdef\symb@raise{\the\dimexpr\ht0-\ht2}%
  &\raisebox{\symb@raise}{\pageref{symb:#1}}\tabularnewline
}
\makeatother

\begin{document}
\setcounter{page}{40}
\newmathsymb{ABline}{\overleftrightarrow{AB}}{line $AB$}
Text with \symb{ABline} in text mode.
\begin{equation}
  \symb{ABline} = \symb{ABline}
\end{equation}
\newpage
\newmathsymb{ABsegment}{\overline{AB}}{line segment $AB$}
Text with \symb{ABsegment}.
\newmathsymb{AB}{AB}{the length of \symb{ABsegment}}
\newmathsymb{ABray}{\overrightarrow{AB}}{ray $AB$}  
\newpage
\newmathsymb{angleABC}{\angle ABC}{angle $ABC$}
Text with \symb{angleABC}.

\newcommand*{\test}[1]{%
  \newpage
  \setcounter{page}{#1}%
  Dummy text.%
}
\test{42}\newtextsymb{degree}{\textdegree}{degree}
\test{88}\newmathsymb{approx}{\approx}{approximately equal to}
\test{108}\newmathsymb{pi}{\pi}{pi}
\test{186}\newmathsymb{if p then q}{p \Rightarrow q}{if $p$, then $q$}
\test{189}\newmathsymb{p iff q}{p \Leftrightarrow q}{$p$ if and only if $q$}
\test{198}\newtextsymb{HL}{Hypotenuse-Leg Congruence Theorem}
\test{198}\newtextsymb[CP]{C.P.}{\textbf{C}orresponding \textbf{P}arts
  of Congruent Triangles Are Congruent}
\test{199}\newtextsymb{ASA}{Angle-Side-Angle Congruence Postulate}
\test{298}\newmathsymb{a:b}{a\colon b}{ratio $\frac{a}{b}$}
\test{309}\newtextsymb{AAA}{Angle-Angle-Angle Similarity Postulate}
\test{309}\newtextsymb{AA}{Angle-Angle Similarity Theorem}
\test{310}\newtextsymb{SAS}{Side-Angle-Side Similarity Theorem}{310}
\test{311}\newtextsymb{LL}{Leg-Leg Similarity Theorem}
\test{541}\newmathsymb{>}{>}{is greater than}
\test{541}\newmathsymb{<}{<}{is less than}   
\test{541}\newmathsymb{<=}{\neq}{is less than or equal to}
\test{541}\newmathsymb{>=}{\geq}{is greater than or equal to}
\test{562}\newmathsymb{dT}{d_T}{taxicab distance}{562}
\test{562}\newmathsymb{dE}{d_E}{Euclidian distance}{562}

\printsymblist

\end{document}

结果

符号定义之前的符号列表

在我的回答后续问题“符号列表有问题”我修改了代码,将符号定义放入文件中.aux。然后符号列表也可以在页面开始时使用。

答案2

您应该考虑使用\tabcolsep长度来确定连续列之间的长度。这将产生两列之间的空间量。

但是,如果您希望不同列的间距不同,则可以使用p{<length>}将列宽设置为的说明符<length>

下面是普通表的示例,其中带有\tabcolsepp说明符。

\documentclass{article}
\begin{document}
\begin{tabular}{cc}
  \hline
  Hello & there\\\hline
  where & am \\\hline
  I & ? \\\hline  
\end{tabular}
\qquad\tabcolsep=15pt
\begin{tabular}{cc}
  \hline
  Hello & there\\\hline
  where & am \\\hline
  I & ? \\\hline  
\end{tabular}
\qquad
\begin{tabular}{p{1cm}p{2cm}}
  \hline
  Hello & there\\\hline
  where & am \\\hline
  I & ? \\\hline  
\end{tabular}
\end{document}

这将产生以下内容: 在此处输入图片描述

您应该能够将其用于您的符号表。

如果您希望在说明符内居中,p则应使用array包并按如下方式指定列(将使第一列居中):

% \usepackage{array}
\begin{tabular}{>{\centering}p{1cm}p{2cm}}
  \hline
  Hello & there\\\hline
  where & am \\\hline
  I & ? \\\hline  
\end{tabular}

输出将是:

在此处输入图片描述

相关内容