如何使用 Latexdb 和 mysql 建立索引或目錄?

如何使用 Latexdb 和 mysql 建立索引或目錄?

我有一個充滿姓名、地址等的資料庫。 我們在工作中使用它們來確保只有資料庫中的人員才允許進入(或拒絕進入,如果他們曾經做過錯事)。我使用 pdflatexdb 建立了一個文檔,透過使用 longtable,我現在有了一個「工作」文檔,如果需要的話我可以使用它。

然而,當我們每天在資料庫中新增人員時,「清單」會變得越來越大,並且在掃描姓名或身分證號碼等方面變得越來越難以管理。我想弄清楚的是如何建立一個“索引”,該索引將顯示哪些頁面的姓氏(資料庫中的一個欄位)以... IE - 以 A 開頭的名稱位於第一頁,B 第 50 頁,C第60 頁,等等。這是一個工作範例:

\documentclass[10pt,twoside]{report}

\usepackage{longtable}
\usepackage[left=.5in, right=.5in, top=1cm, bottom=.8in]{geometry}

\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhead{}
\fancyfoot{}
\fancyfoot[RE, RO]{\thepage}
\fancyfoot[C]{Generated: \today}

\renewcommand{\headrulewidth}{0pt}
\texdbconnection{CONNECTION STUFF}

%% BEGIN TeXDBdef
\texdbdef{##query}{select lname, fname, license_no, comments from visitors where redsheet='Allow' order by lname}{##lname,##fname,##license,##comments}

%% EHD TeXDBdef

\begin{document}
\begin{center}\section*{These people are allowed inside the building.}\end{center}
\begin{center}\Large{Ordered by name}\end{center}
\begin{longtable}{@{\extracolsep{\fill}}llp{8cm}l}
    \Large{Name} & \Large{License \#} & \Large{Comments} \vspace{1em} \\     \hline \vspace{.2em}
    \endhead
    \vspace{.8em}
    \texdbfor{##query}{\texttt{##lname,} \texttt{##fname} & \texttt{##license} & \texttt{\textit{##comments}} \\ \vspace{.5em}}
\end{longtable}

\end{document}

我是一個相對的新手LaTeX,所以如果我的文件有明顯的錯誤,請保持溫和(我假設我的一些程式碼是多餘的,甚至是無用的)。

謝謝。

答案1

但是,如果沒有連接包和要連接的東西,則無法運行程式碼

\Large{Ordered by name}

大小命令如\Large不帶參數,所以如果你以這種形式使用,它們{}不會界定參數,而是創建一個群組,在這種情況下是無害的,但令人困惑,最好省略大括號。

但我猜你可以替換

\texttt{##lname,} 

經過

\labelname{##lname}\texttt{##lname,} 

where\labelname取得第一個字母,\label如果它是新的,則執行 a ,類似

\def\labelname#1{\xlabelname#1.\relax}
\def\xlabelname#1#2\relax{%
\def\tmp{#1}%
\ifx\tmp\firstletter
\else
\global\let\firstletter\tmp
\label{letter-#1}%
\fi}

然後最後你只需要\pageref依序使用每個字母:

\documentclass{article}

\def\labelname#1{\xlabelname#1.\relax}
\def\xlabelname#1#2\relax{%
\def\tmp{#1}%
\ifx\tmp\firstletter
\else
\global\let\firstletter\tmp
\label{letter-#1}%
\fi}

\begin{document}

\labelname{Alan}Alan
\labelname{Brian}Brian
\labelname{David}David

\newpage

\labelname{Duncan}Duncan
\labelname{Fred}Fred


\section{Name index}

\makeatletter
\def\refnameletter#1{%
\expandafter\ifx\csname r@letter-#1\endcsname\relax\else
\par\noindent#1: \pageref{letter-#1}\par
\fi
\if Z#1\else\expandafter\refnameletter\fi}

\refnameletter ABCDEFGHIJKLMNOPQRSTUVWXYZ

\end{document}

在此輸入影像描述

在此輸入影像描述

相關內容