goLaTeX - Mein LaTeX-Forum

Mein LaTeX-Forum


Login  | Registrieren
Bücher:

Schnell ans Ziel mit LATEX 2e


Forenstatistik:
Beiträge: 55128
Seitenaufrufe:
342140 PIs (Mai 2012)

Top-Poster: KOMA (2637)

Wir begrüßen unseren neuesten Benutzer meintobby.

Partner:

KOMA-Script



TeXblog



LaTeX Community




Forum
      Option
[Erweitert]
  • Diese Seite weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Verschachtelte if-then-else Struktur in LaTeX?

 

talueng
Forum-Anfänger
Forum-Anfänger

Beiträge: 39
Anmeldedatum: 31.05.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.05.2010, 13:48     Titel: Verschachtelte if-then-else Struktur in LaTeX?
  Antworten mit Zitat      
Ich benötige einen Befehl, der mir von zwei Zeitangaben im Format HH:MM die Differenz berechnet im Format HH Stunden, MM Minuten, also z.B.

Beginn 10:30
Ende 12:15
Differenz 1 Stunde, 45 Minuten

Ich habe dank Google dazu auch fertigen LaTeX-Code gefunden und war in der Lage, diesen etwas meinen Bedürfnissen anzupassen. Leider komme ich aber an der Stelle nicht weiter, wo man folgende Fallunterscheidungen machen müsste:
- Wenn 1 Stunde, dann "Stunde" sonst "Stunden" schreiben
- Wenn 1 Minute, dann "Minute" sonst "Minuten" schreiben
- Wenn 0 Stunden, dann ganz weglassen
- Wenn 0 Minuten, dann ganz weglassen

Leider habe ich mit if-then-else-Strukturen in LaTeX keine Erfahrung. Vielleicht kann jemand von Euch helfen. Hier der Code:

Code:

% function to compute the difference between two times hh:mm
\newcount\hours
\newcount\minutes
%
\def\gettime#1:#2\relax#3#4{\def#3{#1}\def#4{#2}}
%
\newcommand{\sub}[2]{\expandafter\gettime#1\relax{\hrs}{\mins}%
\expandafter\gettime#2\relax{\subhrs}{\submins}%
\hours=\hrs\relax
\advance\hours by -\subhrs\relax
\minutes=\mins\relax
\advance\minutes by -\submins\relax
\ifnum\minutes>59\relax
\advance\minutes by -60\relax
\advance\hours by 1\relax
\else
\ifnum\minutes<0\relax
\advance\minutes by 60\relax
\advance\hours by -1\relax
\fi
\fi
\ifnum\hours>23\relax
\advance\hours by -24\relax
\else
\ifnum\hours<0\relax
\advance\hours by 24\relax
\fi
\fi
\ifnum\hours>0\relax
\ifnum\minutes<10\relax
\xdef#1{\number\hours\,Stunden, 0\number\minutes\,Minuten}%
\else
\xdef#1{\number\hours\,Stunden, \number\minutes\,Minuten}%
\fi
\fi
\ifnum\hours=0\relax
\ifnum\minutes<10\relax
\xdef#1{0\number\minutes\,Minuten}%
\else
\xdef#1{\number\minutes\,Minuten}%
\fi
\fi
}
 
[/code]
Private Nachricht senden Benutzer-Profile anzeigen

Stefan
Moderator
Moderator


Beiträge: 1655
Anmeldedatum: 08.07.08
Wohnort: Hamburg
Version: TeX Live 2013
     Beitrag Verfasst am: 31.05.2010, 17:13     Titel: \ifthenelse
  Antworten mit Zitat      
Hallo talueng,

willkommen im Forum!
Du könntest das ifthen-Paket verwenden, das bietet einen Befehl \ifthenelse.

Viele Grüße,

Stefan
_________________

TeXwelt - Fragen und Antworten zu LaTeX
Private Nachricht senden Benutzer-Profile anzeigen

KOMA
TeX-Entwickler
TeX-Entwickler


Beiträge: 2637
Anmeldedatum: 04.07.08
Wohnort: ---
Version: Ich bin hier nicht mehr zu erreichen!
     Beitrag Verfasst am: 31.05.2010, 20:57     Titel:
  Antworten mit Zitat      
Angesichts der bereits im Code-Schnippsel vorgeführten Fallunterscheidungen (bezüglich größer Null und kleiner zehn) ist die Lösung eigentlich naheliegend. Folgende Änderung bei den 14 Zeilen vor der schließenden geschweiften Klammer am Ende:
Code:
\ifnum\hours>0\relax
\ifnum\minutes<10\relax
\xdef#1{\number\hours\,Stunde\ifnum\hours=1\relax\else n\fi, 0\number\minutes\,Minute\ifnum\minutes=1\relax\else n\fi}%
\else
\xdef#1{\number\hours\,Stunde\ifnum\hours=1\relax\else n\fi, \number\minutes\,Minute\ifnum\minutes=1\relax\else n\fi}%
\fi
\fi
\ifnum\hours=0\relax
\ifnum\minutes<10\relax
\xdef#1{0\number\minutes\,Minute\ifnum\minutes=1\relax\else n\fi}%
\else
\xdef#1{\number\minutes\,Minute\ifnum\minutes=1\relax\else n\fi}%
\fi
\fi
Das ganze ist mangels vollständigen Minimalbeispiels (← dies ist ein geprüfter Link mit relevanten Informationen!) ungetestet.
_________________

goLaTeX-Knigge (mit Themen Minimalbeispiel und So stellst Du Deine Frage richtig)
DE-TeX-FAQ, UK-FAQ, l2kurz, l2tabu, CTAN, The TeX Catalogue
KOMA-Script
Ich bin hier nicht mehr zu erreichen!
Private Nachricht senden Benutzer-Profile anzeigen

talueng
Forum-Anfänger
Forum-Anfänger

Beiträge: 39
Anmeldedatum: 31.05.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.06.2010, 17:44     Titel:
  Antworten mit Zitat      
Danke Euch beiden! Hatte mir dann zunächst das o.g. Paket angeguckt, das mir aber Fehler geschmissen hat. Anschließend habe ich mir nochmals genau den Code angeguckt und irgendwann dann auch den \ifnum-Befehl verstanden und bin damit zu einer eigenen Lösung gekommen.

Für Interessierte die Lösung untenstehend.

Code:
% function to compute the difference between two times hh:mm
\newcount\hours
\newcount\minutes
%
\def\gettime#1:#2\relax#3#4{\def#3{#1}\def#4{#2}}
%
\newcommand{\sub}[2]{\expandafter\gettime#1\relax{\hrs}{\mins}%
\expandafter\gettime#2\relax{\subhrs}{\submins}%
\hours=\hrs\relax
\advance\hours by -\subhrs\relax
\minutes=\mins\relax
\advance\minutes by -\submins\relax
\ifnum\minutes>59\relax
\advance\minutes by -60\relax
\advance\hours by 1\relax
\else
\ifnum\minutes<0\relax
\advance\minutes by 60\relax
\advance\hours by -1\relax
\fi
\fi
\ifnum\hours>23\relax
\advance\hours by -24\relax
\else
\ifnum\hours<0\relax
\advance\hours by 24\relax
\fi
\fi

\ifnum\hours>0\relax
  \ifnum\hours=1\relax
    % 1 Stunde
    \ifnum\minutes<10\relax
      \ifnum\minutes=0\relax
        \xdef#1{\number\hours\,Stunde}%
      \else
        \ifnum\minutes=1\relax
          \xdef#1{\number\hours\,Stunde, 0\number\minutes\,Minute}%
        \else
          \xdef#1{\number\hours\,Stunde, 0\number\minutes\,Minuten}%
        \fi
      \fi
    \else
      \xdef#1{\number\hours\,Stunde, \number\minutes\,Minuten}%
    \fi
  \else
    % x Stunden
    \ifnum\minutes<10\relax
      \ifnum\minutes=0\relax
        \xdef#1{\number\hours\,Stunden}%
      \else
        \ifnum\minutes=1\relax
          \xdef#1{\number\hours\,Stunden, 0\number\minutes\,Minute}%
        \else
          \xdef#1{\number\hours\,Stunden, 0\number\minutes\,Minuten}%
        \fi
      \fi
    \else
      \xdef#1{\number\hours\,Stunden, \number\minutes\,Minuten}%
    \fi
  \fi
\else
  \ifnum\minutes<10\relax
     \ifnum\minutes=1\relax
       \xdef#1{0\number\minutes\,Minute}%
     \else
       \xdef#1{0\number\minutes\,Minuten}%
     \fi
   \else
     \xdef#1{\number\minutes\,Minuten}%
   \fi
\fi
}
Private Nachricht senden Benutzer-Profile anzeigen

Neues Thema eröffnen Neue Antwort erstellen



Options and Permissions
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen
.

goLaTeX ist ein Teil des goForen-Labels
goForen.de goMATLAB.de goLaTeX.de goPCB.de


  Impressum | Werbung/Mediadaten | FAQ | goLaTeX RSS Button RSS-Feed

Copyright © 2008 - 2014 goLaTeX.de
Partner: LabVIEWforum.de