Genealogie-System

Genealogie-System

Ich schreibe eine Familiengeschichte und möchte ungefähr Folgendes machen: Für jede Person habe ich ein Kapitel und jede Person wird durch einen einzigartigen Code identifiziert.

Zum Beispiel so etwas:

\personChapter{John Doe}{1}

John Doe is born in 1900, lorem ipsum dolor sit amet, consectetur adipisci
elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua.

die Folgendes erzeugen:

John Doe

John Doe wurde im Jahr 1900 geboren, lorem ipsum dolor sit amet, consectetur adipisci elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua.

Auf einer anderen Seite kann ich Folgendes schreiben:

\personChapter{Jennifer Doe}{23}

Jennifer Doe, born in 1920, is the daughter of \person{1}.

die Folgendes erzeugen:

Jennifer Doe

Jennifer Doe, geboren 1920, ist die Tochter vonJohn Doe¹.


¹ Siehe John Doe auf Seite 46.

in welchemJohn Doeist ein Link zur John Doe-Seite (in diesem Beispiel Seite 46).

Wenn ich möchte, kann ich nur den Link oder nur die Fußnote hinzufügen:

Jennifer Doe, born in 1920, is the daughter of \personLink{1}.

Jennifer Doe, born in 1920, is the daughter of \personFoot{1}.

Ich kann auch einen anderen Namen angeben, zum Beispiel diesen:

John Doe's \person{23}[daughter] is dead in 1990.

produziere dies:

John DoesTochter¹ ist seit 1990 tot.


¹ Siehe Jennifer Doe auf Seite 125.

in welchemTochterist ein Link zur Seite von Jennifer Doe.

Darüber hinaus können Personen über mehrere Codes verfügen, zum Beispiel:

\personChapter{Jennifer Doe}{23}[JenniferDoe1920][JD20]

Dann kann ich einen Index mit allen Personen erstellen. Für jede Person im Index ist die Hauptseite dieser Person verlinkt:

\printPeopleIndex

Oder Sie verlinken mit einem anderen Befehl alle Seiten, auf denen sie zitiert werden:

\printPeopleAllRef

Ist so etwas möglich?


Ich habe diese Befehle geschrieben, die teilweise das tun, was ich oben geschrieben habe.

\newcommand{\personChapter}[2]
{
\chapter{#1}
\label{ch:#2}
}

\newcommand{\person}[1]
{
\nameref{ch:#1}
\footnote{See \nameref{ch:#1} on page \pageref{ch:#1} .}
}

Antwort1

BEARBEITET, um Hotlinks zu verwenden. Es verwendet die AUX-Datei zum Speichern der Beschriftungsinformationen, sodass es vorwärts- und rückwärts referenzieren kann, wie in diesem MWE gezeigt.

Ich habe \persondie Verwendung eines Fußnotenlinks und \personLinkdie Implementierung eines direkten Links implementiert. BEARBEITET, um eine Implementierung zu ermöglichen \personFoot, die eine einfache Fußnote ohne Link zu einer anderen Seite bereitstellt.

\textheightUm das Ergebnis besser darzustellen, ist es in diesem MWE verkleinert .

\documentclass{article}
\usepackage{lipsum}
\makeatletter
\long\def \protected@iwrite#1#2#3{%
     \begingroup
     \let\thepage\relax
     #2%
     \let\protect\@unexpandable@protect
     \edef\reserved@a{\immediate\write#1{#3}}%
     \reserved@a
     \endgroup
     \if@nobreak\ifvmode\nobreak\fi\fi
    }
\newcommand\personChapter[2]{\bigskip%
  \protected@iwrite\@auxout{\def\nex{\noexpand\noexpand\noexpand}}{%
    \nex\expandafter\xdef%
    \nex\csname GenLabel#2%
    \nex\endcsname{#1}%
  }%
  \label{Label#2}%
  \noindent\textbf{#1}\smallskip}
\makeatother
\newcommand\person[1]{\csname GenLabel#1\endcsname\footnote{%
  See \csname GenLabel#1\endcsname{} on page \pageref{Label#1}}}
\newcommand\personLink[1]{\csname GenLabel#1\endcsname{} (page \pageref{Label#1})}
\newcommand\personFoot[1]{\csname GenLabel#1\endcsname\footnote{%
  See \csname GenLabel#1\endcsname{} on page \pageref*{Label#1}}}
\parindent 0pt
\textheight 2in
\usepackage{hyperref}

\begin{document}
\personChapter{John Doe}{1}

John Doe is born in 1900, father of \person{23} or, using unlinked footnote,
father of \personFoot{23}, \lipsum[3]

\personChapter{Jennifer Doe}{23}

Jennifer Doe, born in 1920, is the daughter of \person{1} or,
  using no footnote, the daughter of \personLink{1}.
\end{document}

Bildbeschreibung hier eingeben

Bildbeschreibung hier eingeben


Hinweis: Das \protected@iwriteMakro stammt aus der Antwort von egreg unterSchreiben von \\ in eine Datei.

verwandte Informationen