使用下划线对项目列表进行排序

使用下划线对项目列表进行排序

我正在尝试按字母顺序对一堆项目进行排序(用于编码基础),并且自然许多方法名称都有下划线。通常,我可以使用 sortedlist 对 LaTeX 中的任意数量的项目进行排序而不会出现任何问题,但似乎如果某个项目在下划线之前相同,则 LaTeX 会抛出与无限循环相关的错误

"! TeX capacity exceeded, sorry [input stack size=5000]."

以下是我的文档

\documentclass[10pt,a4paper,draft]{article}
\usepackage{graphicx}
\usepackage[amssymb]{SIunits}
\usepackage{amssymb}
\usepackage{calc}
\usepackage{framed}
\usepackage[pdfborder={0 0 0}]{hyperref}
\usepackage{color}
\usepackage{datatool}

\parindent=10pt
\hoffset=0pt
\voffset=0pt
\oddsidemargin=0.5in
\setlength\textwidth{\paperwidth-2.5in-\oddsidemargin}

\usepackage{graphicx,amsmath,amssymb,mathrsfs,array,longtable,delarray,verbatim,epsfig}
%\graphicspath{{Macintosh HD\Users\Luke\Google Drive\Triton\Procedures}}

\begin{document}

\newcommand{\LN}{$\mathrm{LN_2}$~}
\newcommand{\HeThree}{$\mathrm{^3He}$~}
\newcommand{\sortitem}[1]{%
  \DTLnewrow{list}% Create a new entry
  \DTLnewdbentry{list}{description}{#1}% Add entry as description
}
\newenvironment{sortedlist}{%
  \DTLifdbexists{list}{\DTLcleardb{list}}{\DTLnewdb{list}}% Create new/discard old list
}{%
  \DTLsort{description}{list}% Sort list
  \begin{itemize}%
    \DTLforeach*{list}{\theDesc=description}{%
      \item \theDesc}% Print each item
  \end{itemize}%
}

\begin{sortedlist}
  \sortitem{gauss\_cf2()}
  \sortitem{lorenzian\_cf()}
  \sortitem{linear\_cf()}
  \sortitem{eq\_lorentz()}
  \sortitem{eq\_linear()}
\end{sortedlist}

\end{document}

如果我删除最后一项,编译会成功。因此,它似乎可以很好地处理下划线,但是如果项在下划线之前相同,它似乎无法排序。

有人知道怎么解决这个问题吗?这对于我们的文档数据库来说非常方便。

答案1

您可以添加删除下划线的条目:

\documentclass[10pt,a4paper,draft]{article}
\usepackage{graphicx}
\usepackage[amssymb]{SIunits}
\usepackage{amssymb}
\usepackage{calc}
\usepackage{framed}
\usepackage{color}
\usepackage{datatool}
\usepackage[pdfborder={0 0 0}]{hyperref}

\parindent=10pt
\hoffset=0pt
\voffset=0pt
\oddsidemargin=0.5in
\setlength\textwidth{\paperwidth-2.5in-\oddsidemargin}

\usepackage{graphicx,amsmath,amssymb,mathrsfs,array,longtable,delarray,verbatim,epsfig}
%\graphicspath{{Macintosh HD\Users\Luke\Google Drive\Triton\Procedures}}

\begin{document}

\newcommand{\LN}{$\mathrm{LN_2}$~}
\newcommand{\HeThree}{$\mathrm{^3He}$~}
\newcommand{\sortitem}[1]{%
  \DTLnewrow{list}% Create a new entry
  \DTLnewdbentry{list}{description}{#1}% Add entry as description
  \begingroup
  \def\_{}%
  \edef\x{\endgroup\noexpand\DTLnewdbentry{list}{no-us-description}{#1}}\x
}
\newenvironment{sortedlist}{%
  \DTLifdbexists{list}{\DTLcleardb{list}}{\DTLnewdb{list}}% Create new/discard old list
}{%
  \DTLsort{no-us-description}{list}% Sort list
  \begin{itemize}%
    \DTLforeach*{list}{\theDesc=description}{%
      \item \theDesc}% Print each item
  \end{itemize}%
}

\begin{sortedlist}
  \sortitem{gauss\_cf2()}
  \sortitem{lorenzian\_cf()}
  \sortitem{linear\_cf()}
  \sortitem{eq\_lorentz()}
  \sortitem{eq\_linear()}
\end{sortedlist}

\end{document}

在此处输入图片描述

相关内容