Anzeige:
Ergebnis 1 bis 4 von 4

Thema: [Möglichst LaTeX3]Preis ausgeben

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Registrierter Benutzer
    Registriert seit
    07.01.2012
    Beiträge
    13

    [Möglichst LaTeX3]Preis ausgeben

    Hallo.

    Ich versuche gerade eine Funktion zu schreiben, die Euro-Beträge ausgibt, und prüft, ob Euro/Cent 0 bzw. leer gelassen worden sind und dementsprechend die Ausgabe abändert.

    (Wie ich 's in C++ machen würde)
    Code:
    #include 
    using namespace std;
    
    void Preis(int Hauptargument, int optionalArgument);
    int main()
    {
       Preis(0,0);    // ---
       Preis(50,0);   // 50,--- €
       Preis(100,50); // 100,50 €
       Preis(0,99); // 99 Cent
    }
    
    void Preis(int Hauptargument, int optionalArgument)
    {
       if((Hauptargument)&& (Hauptargument>0))// ist Hauptargument belegt und ist es größer als 0 [Pseude-Abfrage, da der Wert in LaTeX auch 'leer' (ungleich 0) sein kann ]
       {
             if((optionalArgument) && optionalArgument>0) // Cent-Betrag existiert und ist größer als 0
                cout << Hauptargument << "," << optionalArgument << " €" << endl;
             else // Cent-Betrag existiert nicht oder ist kleiner als 1
                cout << Hauptargument << ",--- €" << endl;
       }
       else
       {
          if((optionalArgument) && optionalArgument>0) // Cent-Betrag existiert und ist größer als 0
             cout << optionalArgument << " Cent" << endl;
          else // Weder Euro noch Cent sind gültig
             cout << "---" << endl;
       }
    }
    Und hier meine LaTeX-Implementation (unkompilierbar, wegen \Preis)
    Code:
    %---------------------------------------------------------------------------
    \documentclass%%
    %---------------------------------------------------------------------------
      [fontsize=11pt,%%          Schriftgroesse
    %---------------------------------------------------------------------------
    % Satzspiegel
       paper=a4,
    %---------------------------------------------------------------------------
    % Formatierung
       draft=off%%                Entwurfsmodus
    ]{scrlttr2}
    
    \usepackage[utf8]{inputenc}
    \usepackage[T1]{fontenc}
    \DeclareUnicodeCharacter{20AC}{\texteuro}
    \usepackage{xparse,l3int}
    
    \newcommand{\Zahl}[1]{\textsc{%\fontfamily{lmssq}\selectfont 
    #1}%\fontfamily{iwonalc}\selectfont
    }
    
    \DeclareDocumentCommand{\Preis}{m O{\NoValue}} {%
    \newcount\ArgA
    \newcount\ArgB
    \ArgA=#1
    \ArgB=#2
    % Cent wurden NICHT übergeben
    \IfNoValueTF {#2}
    {
    	% auch keine Euro-Angabe
    	\IfNoValueTF {#1}
    	{
    		---
    	}{% vielleicht eine Euro-Angabe
    	\ifnum\value{\ArgA}<1 % Null oder kleiner, ergo ungültig!
    		---
    	\else
    		\Zahl{#1},--- € % ja, es gibt eine Euro-Angabe
    	\fi
    	}
    }% Cent wurden übergeben
    {
    	% Euro-Angabe ist leer
    	\IfNoValueTF {#1}%
    	{%
    	\ifnum\value{\ArgB}<1 % Cent-Betrag beträgt null oder kleiner -- ungültig!
    		---
    	\else% Immerhin ist der Cent-Betrag gültig
    		\Zahl{#2} Cent
    	\fi
    	}% Euro-Angabe ist nicht leer
    	{
    		\ifnum\value{\ArgA}<1 % Euro-Betrag ist null oder kleiner, also Cents ausgeben.
    		\Zahl{#2} Cent
    		\else%
    			\Zahl{#1},\Zahl{#2} €
    		\fi
    	}
    }
    }
    
    %\DeclareDocumentCommand{\Preis}{m O{\NoValue}} {%
    \newenvironment{Kosten}{%
    \begin{tabular}{lll}\toprule
    \bfseries Artikel &\bfseries Anzahl &\bfseries Kosten pro Stk. \\
    \midrule}{\end{tabular}}
    
    \newcommand{\KostenEintrag}[4]{\enquote{#1}&\Zahl{#2}&\Preis{#3}[#4]\\}
    
    \begin{document}
    \begin{Kosten}
    \KostenEintrag{Die unendliche Geschichte}{1}{20}{50}
    \KostenEintrag{Momo}{1}{10}{}
    \end{Kosten}
    \end{document}
    Geändert von Furantsu Kafuka (13-06-2012 um 18:40 Uhr)

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •