
Actualmente tengo una cita en mi archivo tex como esta:
\begin{quote}
blabla
\end{quote}
Ahora quiero hacer referencia a esta cita en línea. Agregar una etiqueta funciona, pero no puedo hacer que caption
funcione para mostrar que esta cita es en realidad el número xy. Ya que este entorno no parece ser un entorno flotante, lo que aparentemente es un requisito para \caption{}
.
Entonces he probado lo siguiente:
\begin{quote}
blabla
\label{quote:one}
\end{quote}
Y el complemento \caption{test}
justo antes de la etiqueta no funciona.
Respuesta1
Consulte a continuación la apariencia alternativa. Consulte el ADENDA para conocer la versión que utiliza un archivo auxiliar para permitir referencias futuras.
Como Christian señaló en un comentario, una cita no tiene contador (y por lo tanto no tiene etiqueta de identificación). Sin embargo, podríamos introducir uno en el lquote
entorno, lo que requiere una etiqueta como argumento, a la que se puede hacer referencia mediante \quoteref
.
La implementación que se proporciona a continuación puede modificarse para adaptarse a las necesidades de comillas, esquema de numeración y apariencia, etc.
\documentclass{article}
\newcounter{numquote}
\newenvironment{lquote}[1]{%
\stepcounter{numquote}%
\expandafter\xdef\csname#1\endcsname{\fbox{\thenumquote}}%
\quote``\ignorespaces}{\unskip''\fbox{\thenumquote}\endquote}
\newcommand\quoteref[1]{\csname#1\endcsname}
\begin{document}
Compare this quote
\begin{lquote}{quote:one}
blabla
\end{lquote}
to this one
\begin{lquote}{quote:two}
moreblabla
\end{lquote}
In quotation \quoteref{quote:one}, we see a difference from quote \quoteref{quote:two}.
\end{document}
Apariencia alternativa
\documentclass{article}
\newcounter{numquote}
\newenvironment{lquote}[1]{%
\stepcounter{numquote}
\expandafter\xdef\csname#1\endcsname{\thenumquote}%
\quote Quote \thenumquote: ``\ignorespaces}{\unskip''\endquote}
\newcommand\quoteref[1]{\csname#1\endcsname}
\begin{document}
Compare this quote
\begin{lquote}{quote:one}
blabla
\end{lquote}
to this one
\begin{lquote}{quote:two}
moreblabla
\end{lquote}
In quotation \quoteref{quote:one}, we see a difference from quote \quoteref{quote:two}.
\end{document}
APÉNDICE:
Por el comentario del OP parecía que podría estar usando la \quoteref
definición anterior a la etiqueta en el lquote
entorno. Para tener en cuenta eso, en este anexo he implementado un sistema de escritura en el archivo auxiliar para que las etiquetas estén disponibles incluso antes de que se definan.
\documentclass{article}
\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
}
\newcounter{numquote}
\newenvironment{lquote}[1]{%
\stepcounter{numquote}%
\protected@iwrite\@auxout{\def\nex{\noexpand\noexpand\noexpand}}{%
\nex\expandafter\xdef%
\nex\csname #1%
\nex\endcsname{\thenumquote}%
}%
\quote Quote \thenumquote: ``\ignorespaces}{\unskip''\endquote}
\makeatother
\newcommand\quoteref[1]{\csname#1\endcsname}
\begin{document}
In the future quotation \quoteref{quote:one},
we see a difference from quote \quoteref{quote:two}.
Compare this quote
\begin{lquote}{quote:one}
blabla
\end{lquote}
to this one
\begin{lquote}{quote:two}
moreblabla
\end{lquote}
In quotation \quoteref{quote:one}, we see a difference from quote \quoteref{quote:two}.
\end{document}
Nota: la \protected@iwrite
macro provino de la respuesta de egreg enEscribir \\ en un archivo.
Respuesta2
Sólo \pageref
tiene sentido:
\documentclass{article}
\usepackage{caption}
\begin{document}
\begingroup
\begin{quote}
blabla
\end{quote}
\captionof*{figure}{Test}\label{quote:one}
\endgroup
See quote on page~\pageref{quote:one}
\end{document}
Respuesta3
La solución aceptada es defectuosa en muchos sentidos. LaTeX ya tiene su propio mecanismo de referencia y eso lo evita, lo que causa problemas, como ha visto.
En cambio, definiría el lquote
entorno de la siguiente manera:
\newcounter{numquote}
\newenvironment{lquote}{%
\refstepcounter{numquote}%
\quote}{\unskip~\thenumquote\endquote}
Usarías esto con algo como
\begin{lquote}
blah blah
\label{quote:one}
\end{lquote}
...
quote~\ref{quote:one}.
Entonces, si pones
\usepackage{hyperref}
al final del preámbulo obtendrá automáticamente el resultado deseado con hipervínculos en la referencia.