Etiquetar mis propios artículos

Etiquetar mis propios artículos

Estoy escribiendo un pequeño informe financiero en látex... Hay varios expensesque se repiten bastante en todo el informe, por ejemplo food, hotels, train tickets, etc. Creo que será conveniente hacerles etiquetas.

Por ejemplo, la primera vez que escribo food, puedo escribir una etiqueta foodcerca de él en el texarchivo (por ejemplo \labelexpenses{food}); cuando escribo hotels, escribo \labelexpenses{hotels}al lado. Luego, más tarde, al escribir algo como Expense~\refexpenses{food}en el archivo tex, podría mostrarse en el pdf Expense 1; Expense~\refexpenses{hotels}en el archivo tex genera Expense 2. Los números 1y 2son generados por el sistema.

Por lo tanto, es bastante similar a \label{...}y \ref{...}, pero reservado a algo que podría definir yo mismo, y el sistema generará los números automáticamente.

¿Alguien sabe cómo darse cuenta de esto?

Respuesta1

Supongo que te refieres a algo como esto:

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

Respuesta2

Aquí hay otra opción, aunque similar:

ingrese la descripción de la imagen aquí

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

Respuesta3

Así es como he hecho cosas como esta en el pasado:

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

Aquí está el resultado:

ingrese la descripción de la imagen aquí

Entonces lo utilizas \labelledText{mylabel}{some text}para imprimir some texty asignarle la etiqueta mylabel. Luego puede utilizar \ref{mylabel}para reimprimir el resultado.

Esto funcionará tanto con como sinhiperreferencia.

información relacionada