Wert von \ref{} in Zahl umwandeln und per IF prüfen?

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: Wert von \ref{} in Zahl umwandeln und per IF prüfen?

von rais » So 24. Okt 2010, 20:35

Hallo,
talueng hat geschrieben: In meinen Interviewtranskripten setze ich um ein Zitat jeweils zwei Label. Das erste Label markiert die Anfangsstelle des Zitat, das zweite Label markiert die Endstelle des Zitats: \linelabel{cite:abc-23-40} ...
(...)
Problematisch wird es, wenn sich das Zitat nur über eine Zeile erstreckt. Dann ist der Wert von \ref{} jeweils gleich und es kommt zu einer Ausgabe, die keinen Sinn macht, z.B.:

"S. 23, 100-100". Statt dessen sollte bei einem Zitat über eine Zeile dort nur stehen "S. 23, 100". Es müsste also irgendwie mit einer if-Abfrage die beiden Werte gegeneinander getestet werden.
und genau dabei kann Dir das bereits angesprochene refcount-Paket unter die Arme greifen, s. u.
BTW:
talueng hat geschrieben:
\documentclass{scrartcl}  
und
talueng hat geschrieben:
\chapter{Datenauswertung}
passt imho nicht zusammen ...
Versuch es etwa so:
\documentclass{scrartcl}
\usepackage{lineno,refcount}
\newcounter{mya}
\newcounter{myb}

% for line-numbering
\renewcommand\linenumberfont{\normalfont\small}
\setlength\linenumbersep{0.8cm}

% macro für Verweis auf Transkript-Zitat
\newcommand*\tc[2]{%
  \setcounterref{mya}{cite:#1-#2}%
  \setcounterref{myb}{cite:#1-#2-e}%
   S.~\pageref{cite:#1-#2}, {}%
    \ifnum\value{mya}=\value{myb}%
      \ref{cite:#1-#2}%
    \else
      \ref{cite:#1-#2}--\ref{cite:#1-#2-e}%
    \fi
}

\newcommand{\tcl}[1]{%
   \textsc{ABC Ltd.}, \tc{abc}{#1}%
}
 
\begin{document}
\section{Datenauswertung}
Bei der ABC Ltd. laeuft es dieses Jahr super.\footnote{Vgl. \tcl{23-40}.} Andererseits aber auch nicht.\footnote{Vgl. \tcl{23-25}.}

\section{Transkript ABC}
% interview
\begin{runninglinenumbers*}
\begin{description}

\item[Interviewer:] What co-operation partners do you work with?
\item[Mg. ABC:] Lorem ipsum dolor sit amet, consectetur adipiscing elit. \linelabel{cite:abc-23-40}Nunc molestie augue non est dictum at ornare massa interdum. Donec dui neque, laoreet vitae adipiscing sed, malesuada a dui. Nulla facilisi. Sed elementum molestie volutpat. Etiam lacinia, erat at commodo convallis, elit dolor ullamcorper tortor, dapibus vehicula turpis turpis id erat. Nunc facilisis sem non quam auctor hendrerit. Aliquam mi metus, ultrices nec tincidunt at, lacinia quis augue. Nulla purus odio, tincidunt eget venenatis a, adipiscing a neque. Morbi pretium venenatis libero, in malesuada lectus facilisis non.\linelabel{cite:abc-23-40-e} Cras nunc diam, condimentum nec cursus quis, mollis ut ligula. Donec condimentum, erat eget elementum dictum, odio dui aliquet nisi, ac venenatis eros odio non orci. Nulla adipiscing, turpis sit amet gravida varius, risus est ornare quam, ut pulvinar magna magna eget purus.

\item[Interviewer:] How important do you think is searching externally for new knowledge about process management?
\item[Mg. ABC:] \linelabel{cite:abc-23-25}Lorem ipsum dolor sit amet,\linelabel{cite:abc-23-25-e} consectetur adipiscing elit. Nunc molestie augue non est dictum at ornare massa interdum. Donec dui neque, laoreet vitae adipiscing sed, malesuada a dui. Nulla facilisi.
\end{description}
\end{runninglinenumbers*}%
 
\end{document}
MfG
Rainer

von talueng » So 24. Okt 2010, 09:25

Ich habe mal ein Minimalbeispiel angehangen. Erläuterung:

In meinen Interviewtranskripten setze ich um ein Zitat jeweils zwei Label. Das erste Label markiert die Anfangsstelle des Zitat, das zweite Label markiert die Endstelle des Zitats: \linelabel{cite:abc-23-40} ... \linelabel{cite:abc-23-40-e}. Die Funktion \linelabel stammt aus dem \lineno-Package. Auf diese Weise kann ich dann mit einer eigenen Funktion an einer anderen Stelle Seiten- und Zeilenzahl des Zitats ausgeben, um mich auf das Zitat zu beziehen:

\newcommand{\tc}[2]{%
S.~\pageref{cite:#1-#2}, \ref{cite:#1-#2}--\ref{cite:#1-#2-e}%
}

Die Funktion gibt sowas aus wie "S. 23, 100-121"

Problematisch wird es, wenn sich das Zitat nur über eine Zeile erstreckt. Dann ist der Wert von \ref{} jeweils gleich und es kommt zu einer Ausgabe, die keinen Sinn macht, z.B.:

"S. 23, 100-100". Statt dessen sollte bei einem Zitat über eine Zeile dort nur stehen "S. 23, 100". Es müsste also irgendwie mit einer if-Abfrage die beiden Werte gegeneinander getestet werden. Leider komme ich mit if in LaTeX immer noch nicht zurecht. ;-) Wäre über Hilfe dankbar!

Minimalbeispiel:
\documentclass{scrartcl}  
\usepackage[numbers]{natbib}
\usepackage{graphicx}
\usepackage{lineno}

% for line-numbering
\renewcommand\linenumberfont{\normalfont\small}
\setlength\linenumbersep{0.8cm}

% macro für Verweis auf Transkript-Zitat
% hier müsste eine if-Abfrage rein. Pseudocode:
% IF \ref{cite:#1-#2} EQUAL \ref{cite:#1-#2-e}
% THEN OUTPUT \ref{cite:#1-#2}
% ELSE OUTPUT \ref{cite:#1-#2}--\ref{cite:#1-#2-e}
\newcommand{\tc}[2]{%
	S.~\pageref{cite:#1-#2}, \ref{cite:#1-#2}--\ref{cite:#1-#2-e}%
}

\newcommand{\tcl}[1]{%
	\textsc{ABC Ltd.}, \tc{abc}{#1}%
}
 
\begin{document}
\chapter{Datenauswertung}
Bei der ABC Ltd. laeuft es dieses Jahr super.\footnote{Vgl. \tcl{23-40}.} Andererseits aber auch nicht.\footnote{Vgl. \tcl{23-25} \textbf{$\longleftarrow$ An dieser Stelle soll nur "`15"' stehen, da sich das Zitat nur ueber eine Zeile erstreckt. Die Schreibweise "`von--bis"' macht hier keinen Sinn, da "`von"'="'bis"' ist. Es muss also in der Funktion irgendeine if-Abfrage erfolgen, die die Rueckgabe der beiden ref-Funktionen testet}.}

\chapter{Transkript ABC}
% interview
\begin{runninglinenumbers*}
\begin{description}

\item[\rmfamily Interviewer:] What co-operation partners do you work with?
\item[\rmfamily Mg. ABC:] Lorem ipsum dolor sit amet, consectetur adipiscing elit. \linelabel{cite:abc-23-40}Nunc molestie augue non est dictum at ornare massa interdum. Donec dui neque, laoreet vitae adipiscing sed, malesuada a dui. Nulla facilisi. Sed elementum molestie volutpat. Etiam lacinia, erat at commodo convallis, elit dolor ullamcorper tortor, dapibus vehicula turpis turpis id erat. Nunc facilisis sem non quam auctor hendrerit. Aliquam mi metus, ultrices nec tincidunt at, lacinia quis augue. Nulla purus odio, tincidunt eget venenatis a, adipiscing a neque. Morbi pretium venenatis libero, in malesuada lectus facilisis non.\linelabel{cite:abc-23-40-e} Cras nunc diam, condimentum nec cursus quis, mollis ut ligula. Donec condimentum, erat eget elementum dictum, odio dui aliquet nisi, ac venenatis eros odio non orci. Nulla adipiscing, turpis sit amet gravida varius, risus est ornare quam, ut pulvinar magna magna eget purus. 

\item[\rmfamily Interviewer:] How important do you think is searching externally for new knowledge about process management?
\item[\rmfamily Mg. ABC:] \linelabel{cite:abc-23-25}Lorem ipsum dolor sit amet,\linelabel{cite:abc-23-25-e} consectetur adipiscing elit. Nunc molestie augue non est dictum at ornare massa interdum. Donec dui neque, laoreet vitae adipiscing sed, malesuada a dui. Nulla facilisi. Sed elementum molestie volutpat. Etiam lacinia, erat at commodo convallis, elit dolor ullamcorper tortor, dapibus vehicula turpis turpis id erat. Nunc facilisis sem non quam auctor hendrerit. Aliquam mi metus, ultrices nec tincidunt at, lacinia quis augue. Nulla purus odio, tincidunt eget venenatis a, adipiscing a neque. Morbi pretium venenatis libero, in malesuada lectus facilisis non. Cras nunc diam, condimentum nec cursus quis, mollis ut ligula. Donec condimentum, erat eget elementum dictum, odio dui aliquet nisi, ac venenatis eros odio non orci. Nulla adipiscing, turpis sit amet gravida varius, risus est ornare quam, ut pulvinar magna magna eget purus. 

\item[\rmfamily Interviewer:] How often is searched for new knowledge?
\item[\rmfamily Mg. ABC:] Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc molestie augue non est dictum at ornare massa interdum. Donec dui neque, laoreet vitae adipiscing sed, malesuada a dui. Nulla facilisi. Sed elementum molestie volutpat. Etiam lacinia, erat at commodo convallis, elit dolor ullamcorper tortor, dapibus vehicula turpis turpis id erat. Nunc facilisis sem non quam auctor hendrerit. Aliquam mi metus, ultrices nec tincidunt at, lacinia quis augue. Nulla purus odio, tincidunt eget venenatis a, adipiscing a neque. Morbi pretium venenatis libero, in malesuada lectus facilisis non. Cras nunc diam, condimentum nec cursus quis, mollis ut ligula. Donec condimentum, erat eget elementum dictum, odio dui aliquet nisi, ac venenatis eros odio non orci. Nulla adipiscing, turpis sit amet gravida varius, risus est ornare quam, ut pulvinar magna magna eget purus. 

\end{description}
\end{runninglinenumbers*}%
 
\end{document}

von KOMA » Mo 27. Sep 2010, 14:06

Hatten wir so eine Frage nicht erst kürzlich und dazu die Antwort refcount (← dies ist ein geprüfter Link, der direkt zur Paketkurzbeschreibung auf CTAN führt!)?

Vergleiche mit Nummern gehen übrigens bei TeX mit \ifnum (siehe TeX by Topic) oder mit dem LaTeX-Paket ifthen (← dies ist ein geprüfter Link, der direkt zur Paketkurzbeschreibung auf CTAN führt!)

Wert von \ref{} in Zahl umwandeln und per IF prüfen?

von talueng » Mo 27. Sep 2010, 13:02

Ich benutze das Paket lineno um mir Zeilen nummerieren zu lassen. Dann gibt in meinem Dokument die Funktion \ref{cite:blablabla} die Zeilennummer zurück, wo das \label{cite:blablabla} gesetzt wurde. Kann ich die Rückgabe irgendwie in einen Integer-Wert umwandeln und per IF-Abfrage überprüfen?

Pseudocode:

zeile1 = \ref{cite:abc}
zeile2 = \ref{cite:xyz}
if (zeile1 != zeile2): Ausgabe = zeile1--zeile2
else: Ausgabe = zeile1.

Nach oben