![Sistema genealógico](https://rvso.com/image/328817/Sistema%20geneal%C3%B3gico.png)
Estoy escribiendo una historia familiar y quiero hacer algo como esto: para cada persona tengo un capítulo y cada persona está identificada por un código único.
Por ejemplo algo como esto:
\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.
que producen esto:
Juan Pérez
John Doe nace en 1900, lorem ipsum dolor sit amet, consectetur adipisci elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua.
En otra página puedo escribir esto:
\personChapter{Jennifer Doe}{23}
Jennifer Doe, born in 1920, is the daughter of \person{1}.
que producen esto:
Jennifer Doe
Jennifer Doe, nacida en 1920, es hija deJuan Pérez¹.
¹ Véase John Doe en la página 46.
en el cualJuan Pérezes un enlace a la página de John Doe (en este ejemplo, página 46).
Si quiero puedo agregar solo el enlace o solo la nota al pie:
Jennifer Doe, born in 1920, is the daughter of \personLink{1}.
Jennifer Doe, born in 1920, is the daughter of \personFoot{1}.
También puedo especificar otro nombre, por ejemplo este:
John Doe's \person{23}[daughter] is dead in 1990.
producir esto:
John Doehija¹ murió en 1990.
¹ Véase Jennifer Doe en la página 125.
en el cualhijaes un enlace a la página de Jennifer Doe.
Además, las personas pueden tener varios códigos, por ejemplo:
\personChapter{Jennifer Doe}{23}[JenniferDoe1920][JD20]
Entonces puedo producir un índice con todas las personas. Para cada persona en el índice, está vinculada la página principal de esa persona:
\printPeopleIndex
O, con otro comando, se enlazan todas las páginas en las que se citan:
\printPeopleAllRef
¿Es posible algo como esto?
Escribí estos comandos que hacen en parte lo que escribí anteriormente.
\newcommand{\personChapter}[2]
{
\chapter{#1}
\label{ch:#2}
}
\newcommand{\person}[1]
{
\nameref{ch:#1}
\footnote{See \nameref{ch:#1} on page \pageref{ch:#1} .}
}
Respuesta1
EDITADO para usar enlaces activos. Utiliza el archivo auxiliar para guardar la información de etiquetado, de modo que pueda hacer referencia hacia adelante y hacia atrás, como se muestra en este MWE.
Lo he implementado \person
usando un enlace de nota al pie e \personLink
implementando un enlace directo. EDITADO para implementar \personFoot
que proporciona una nota al pie simple sin un enlace a la otra página.
Se \textheight
reduce en este MWE para mostrar mejor el resultado.
\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}
Nota: la \protected@iwrite
macro provino de la respuesta de egreg enEscribir \\ en un archivo.