Meine eigenen Artikel beschriften

Meine eigenen Artikel beschriften

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 fooddaneben 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 1und 2werden 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:

Bildbeschreibung hier eingeben

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

Bildbeschreibung hier eingeben

Mit können Sie also \labelledText{mylabel}{some text}drucken some textund das Etikett zuweisen mylabel. Anschließend können Sie \ref{mylabel}das Ergebnis mit erneut ausdrucken.

Dies funktioniert sowohl mit als auch ohneHyperref.

verwandte Informationen