Я пишу семейную историю и хочу сделать что-то вроде этого: для каждого человека у меня есть глава, и каждый человек идентифицируется уникальным кодом.
Например, что-то вроде этого:
\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.
которые производят это:
Джон Доу
Джон Доу родился в 1900 году, lorem ipsum dolor sit amet, consectetur adipisci elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua.
На другой странице я могу написать следующее:
\personChapter{Jennifer Doe}{23}
Jennifer Doe, born in 1920, is the daughter of \person{1}.
которые производят это:
Дженнифер Доу
Дженнифер Доу, родившаяся в 1920 году, является дочерьюДжон Доу¹.
¹ См. Джона Доу на стр. 46.
в которомДжон Доуссылка на страницу Джона Доу (в данном примере страница 46).
Если я захочу, я могу добавить только ссылку или только сноску:
Jennifer Doe, born in 1920, is the daughter of \personLink{1}.
Jennifer Doe, born in 1920, is the daughter of \personFoot{1}.
Я также могу указать другое имя, например, такое:
John Doe's \person{23}[daughter] is dead in 1990.
создаем это:
Джон Доудочь¹ умер в 1990 году.
¹ См. Дженнифер Доу на стр. 125.
в которомдочьэто ссылка на страницу Дженнифер Доу.
Кроме того, у людей может быть несколько кодов, например:
\personChapter{Jennifer Doe}{23}[JenniferDoe1920][JD20]
Затем я могу создать индекс со всеми людьми. Для каждого человека в индексе, есть ссылка на главную страницу этого человека:
\printPeopleIndex
Или, с помощью другой команды, связываются все страницы, на которых они цитируются:
\printPeopleAllRef
Возможно ли что-то подобное?
Я написал эти команды, которые частично делают то, что я написал выше.
\newcommand{\personChapter}[2]
{
\chapter{#1}
\label{ch:#2}
}
\newcommand{\person}[1]
{
\nameref{ch:#1}
\footnote{See \nameref{ch:#1} on page \pageref{ch:#1} .}
}
решение1
ОТРЕДАКТИРОВАНО для использования горячих ссылок. Он использует aux-файл для сохранения информации о маркировке, поэтому он может ссылаться вперед и назад, как показано в этом MWE.
Я реализовал \person
использование ссылки на сноску и \personLink
реализацию прямой ссылки. ОТРЕДАКТИРОВАНО для реализации \personFoot
, которая обеспечивает простую сноску без ссылки на другую страницу.
В этом MWE изображение \textheight
уменьшено, чтобы лучше показать результат.
\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}
Примечание: \protected@iwrite
макрос взят из ответа egreg наЗапись \\ в файл.