
Ich habe derzeit ein Zitat in meiner Tex-Datei wie dieses:
\begin{quote}
blabla
\end{quote}
Jetzt möchte ich inline auf dieses Zitat verweisen. Das Hinzufügen eines Labels funktioniert, aber ich bekomme es nicht zum caption
Laufen, um zu zeigen, dass es sich bei diesem Zitat tatsächlich um die Nummer xy handelt. Da diese Umgebung keine Float-Umgebung zu sein scheint, was anscheinend eine Voraussetzung für ist \caption{}
.
Also habe ich Folgendes versucht:
\begin{quote}
blabla
\label{quote:one}
\end{quote}
Und das Hinzufügen \caption{test}
direkt vor dem Etikett funktioniert nicht.
Antwort1
Siehe unten für alternatives Erscheinungsbild. Siehe ADDENDUM für Version, die AUX-Datei verwendet, um zukünftige Referenzierung zu ermöglichen
Wie Christian in einem Kommentar anmerkte, hat ein Zitat keinen Zähler (und somit kein identifizierendes Label). Wir könnten jedoch eines in die lquote
Umgebung einführen, die ein Label als Argument erfordert, das von referenziert werden kann \quoteref
.
Die unten angegebene Implementierung kann an die Anforderungen hinsichtlich Anführungszeichen, Nummerierungsschema und Erscheinungsbild usw. angepasst werden.
\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}
Alternatives Erscheinungsbild
\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}
NACHTRAG:
Aus dem Kommentar des OP ging hervor, dass er möglicherweise die Bezeichnung \quoteref
vor der Labeldefinition in der lquote
Umgebung verwendet. Um dies zu berücksichtigen, habe ich in diesem Nachtrag ein System zum Schreiben in die AUX-Datei implementiert, um die Labels bereits vor ihrer Definition verfügbar zu machen.
\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}
Hinweis: Das \protected@iwrite
Makro stammt aus der Antwort von egreg unterSchreiben von \\ in eine Datei.
Antwort2
Nur eins \pageref
macht Sinn:
\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}
Antwort3
Die akzeptierte Lösung ist in vielerlei Hinsicht fehlerhaft. LaTeX hat bereits einen eigenen Referenzierungsmechanismus und dieser umgeht ihn, was, wie Sie gesehen haben, zu Problemen führt.
Stattdessen würde ich die lquote
Umgebung wie folgt definieren:
\newcounter{numquote}
\newenvironment{lquote}{%
\refstepcounter{numquote}%
\quote}{\unskip~\thenumquote\endquote}
Sie können dies mit etwas wie
\begin{lquote}
blah blah
\label{quote:one}
\end{lquote}
...
quote~\ref{quote:one}.
Wenn Sie dann
\usepackage{hyperref}
Am Ende Ihrer Präambel erhalten Sie mit Hyperlinks auf die Referenz automatisch das gewünschte Ergebnis.