latexdb와 mysql을 사용하여 인덱스나 TOC를 어떻게 만들 수 있나요?

latexdb와 mysql을 사용하여 인덱스나 TOC를 어떻게 만들 수 있나요?

나는 이름, 주소 등으로 가득 찬 데이터베이스를 가지고 있습니다. 우리는 작업에서 이를 사용하여 데이터베이스에 있는 사람만 내부에 들어갈 수 있는지 확인합니다(또는 잘못된 일을 한 경우 입장이 거부됩니다). 나는 pdflatexdb로 문서를 만들었고, longtable을 사용함으로써 이제 필요할 때 사용할 수 있는 '작업' 문서를 갖게 되었습니다.

그러나 매일 데이터베이스에 사람을 추가하면 이름이나 ID 번호 등을 검색하는 한 "목록"이 커지고 관리하기가 어려워집니다. 내가 알아내고 싶은 것은 어떤 페이지의 성(DB의 필드)이 다음으로 시작하는지 보여주는 "색인"을 만드는 방법입니다. IE - A로 시작하는 이름은 1페이지, 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}

나는 n00b의 친척입니다LaTeX 내 문서에 눈에 띄는 오류가 있는 경우 조심하시기 바랍니다(내 코드 중 일부가 중복되거나 쓸모가 없다고 가정합니다).

감사해요.

답변1

그러나 연결 패키지와 연결할 항목 없이는 코드를 실행할 수 없습니다.

\Large{Ordered by name}

와 같은 크기 명령은 \Large인수를 취하지 않으므로 해당 형식으로 사용하면{} 인수를 구분하지 않고 이 경우 무해하지만 혼란스러운 그룹을 만드는 형식으로 사용하는 경우 중괄호를 생략하는 것이 좋습니다.

하지만 내 생각엔 네가 교체할 수 있을 것 같아

\texttt{##lname,} 

~에 의해

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

\labelname첫 번째 문자를 가져오고 새 문자인 경우 다음과 같은 작업을 수행 합니다 \label.

\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}

여기에 이미지 설명을 입력하세요

여기에 이미지 설명을 입력하세요

관련 정보