
Ich schreibe einen kleinen Finanzbericht in Latex ... Es gibt mehrere expenses
, die sich im gesamten Bericht recht oft wiederholen, z. B. food
, hotels
, train tickets
, usw. Ich denke, es wäre praktisch, für sie Beschriftungen zu erstellen.
Wenn ich beispielsweise zum ersten Mal schreibe food
, kann ich in der Datei eine Bezeichnung food
daneben schreiben tex
(zum Beispiel \labelexpenses{food}
); wenn ich schreibe hotels
, schreibe ich \labelexpenses{hotels}
daneben. Wenn ich dann später etwas wie Expense~\refexpenses{food}
in die Tex-Datei schreibe, könnte es im PDF angezeigt werden Expense 1
; Expense~\refexpenses{hotels}
in der Tex-Datei wird generiert Expense 2
. Die Zahlen 1
und 2
werden vom System generiert.
\label{...}
Es ist also und ziemlich ähnlich \ref{...}
, aber auf etwas reserviert, das ich selbst definieren kann, und die Zahlen werden automatisch vom System generiert.
Weiß jemand wie man das realisieren kann?
Antwort1
Ich nehme an, Sie meinen so etwas:
\documentclass{article}
\usepackage{hyperref}
\newcounter{refexp}
\setcounter{refexp}{0}
\newcommand{\labelexpenses}[1]{%
\phantomsection
\refstepcounter{refexp}%
\label{#1}%
}
\newcommand{\refexpenses}[1]{%
\ref{#1}%
}
\begin{document}
For instance, the first time I write food, I can write a label food
close to it in the tex file (for example
\verb|\labelexpenses{food}|\labelexpenses{food}); when I write hotels,
I write \verb|\labelexpenses{hotels}|\labelexpenses{hotels} next to it.
Then later, by writing something like Expense~\refexpenses{food} in the
tex file, it could show in the pdf Expense 1; Expense~\refexpenses{hotels}
in the tex file generates Expense 2. The numbers 1 and 2 are generated by
the system.
\end{document}
Antwort2
Hier ist eine andere, wenn auch ähnliche Option:
\documentclass{article}
\usepackage{booktabs}
\newcounter{expensecntr}
\renewcommand{\theexpensecntr}{(\arabic{expensecntr})}
\newcommand{\labelexpense}[1]{%
\refstepcounter{expensecntr}%
\label{expense:#1}%
#1~\theexpensecntr}
\newcommand{\refexpense}[1]{\ref{expense:#1}}
\begin{document}
\begin{tabular}{lr}
\toprule
\textbf{Expense} & \textbf{Total} \\
\midrule
\labelexpense{Food} & abc \\
\labelexpense{Hotel} & def \\
\labelexpense{Gas} & ghi \\
\bottomrule
\end{tabular}
Expense~\refexpense{Hotel} is really expensive.
\end{document}
Antwort3
So habe ich solche Dinge in der Vergangenheit gemacht:
\documentclass{article}
\usepackage{etoolbox}
\usepackage{hyperref}
\makeatletter
% save text as a \ref-erencable reference in the auxfile
% usage: \labelledText{label}{text} --> \ref{label} recalls it
\newrobustcmd{\labelledText}[2]{#2\edef\@currentlabel{#2}\label{#1}}
\makeatother
\begin{document}
Here is something that I want to refer to later
\labelledText{later}{101}
And here I go using \ref{later} again.
\newcounter{test}
Saving test to none: \labelledText{none}{\thetest}.
\addtocounter{test}5
Saving test to five: \labelledText{five}{\thetest}.
Using the saved values of none=\ref{none} and five=\ref{five}.
\end{document}
Hier ist die Ausgabe:
Mit können Sie also \labelledText{mylabel}{some text}
drucken some text
und das Etikett zuweisen mylabel
. Anschließend können Sie \ref{mylabel}
das Ergebnis mit erneut ausdrucken.
Dies funktioniert sowohl mit als auch ohneHyperref.