Anzeige:
Ergebnis 1 bis 4 von 4

Thema: Problem mit ifthenelse und Subsections

  1. #1
    pop
    Gast

    Problem mit ifthenelse und Subsections

    Hallo liebes Forum,

    Ich möchte gerne optionale, geklammerte Ausdrücke in subsection-Überschriften benutzen, also sowas wie:

    Definition (Definitionname)

    wobei "Definition" konstant ist und "(Definitionname)" ein optionaler Zusatz ist. Falls kein Zusatz angegeben wird, soll nur der konstante Teil erzeugt werden:

    Definition

    Der LaTex-Code, um das entsprechende Definition-Environment sollte folgendermaßen aussehen:
    Code:
      \begin{definition}{Definitionname}{Some text ...}
      \end{definition}
    bzw. ohne geklammerten Zusatz:
    Code:
      \begin{definition}{}{Some text ...}
      \end{definition}
    Für den optionalen Teil benutze ich das ifthen-Package, aber es gibt damit scheinbar Probleme in Subsections. Der LaTex-Code unten zeigt den entsprechenden Teil meines Dokuments, der momentan nur für definierte Tags funktioniert, weil ich den Fehlerteil auskommentiert habe.
    Code:
    \documentclass[a4paper,10pt]{article}
    
    \usepackage{ifthen}
    
    \newcommand{\bracketedname}[1]{
    %  \ifthenelse{\equal{#1}{\empty}}{ }{\ (#1)}
      (#1)
    }
    
    \newenvironment{definition}[2]{
      \subsubsection{Definition \bracketedname{#1}} #2
    }{}
    
    \begin{document}
    
    \begin{definition}{Definitionname}{Some text ...}
    \end{definition}
    
    \end{document}
    Wenn ich die Zeile
    Code:
    %  \ifthenelse{\equal{#1}{\empty}}{ }{\ (#1)}
    statt der benutzten
    Code:
      (#1)
    Zeile aktiviere, erhalte ich folgende Fehlermeldung:
    Code:
    ! Undefined control sequence.
     \equal 
                      {Definitionname}{\empty }
    l.16 ...definition}{Definitionname}{Some text ...
    Hat jemand einen Lösungsansatz dafür? Würde mich wirklich freuen

    pop

  2. #2
    Registrierter Benutzer Avatar von mechanicus
    Registriert seit
    10.07.2008
    Ort
    Hamburg
    Beiträge
    3.944
    Hi,

    und warum nutzt du nicht das Paket amsthm oder ntheorem?

    Code:
    \documentclass{article}
    \usepackage{ntheorem}
    \newtheorem{definition}{Definition}
    \begin{document}
    \begin{definition}
    Some Text
    \end{definition}
    
    \begin{definition}[Bla]
    Some Text
    \end{definition}
    \end{document}
    Gruß
    Marco

  3. #3
    Registrierter Benutzer
    Registriert seit
    17.12.2005
    Beiträge
    300
    Das ist natürlich die bessere Lösung.

    Für den ursprünglichen Ansatz habe ich durch ein bißchen googlen und rumprobieren folgendes gefunden. Es scheint mir so, als müsse der potentiell leere Parameter als optionaler Parameter angegeben werden. Außerdem ist der Vergleich auf "Leerstring" nicht mit \empty.

    Code:
    \documentclass[a4paper,10pt]{article}
    
    \usepackage{ifthen}
    
    \newcommand{\bracketedname}[1][]{
      \ifthenelse{\equal{#1}{}}{ }{\ (#1)}
    }
    
    \newenvironment{definition}[2]{
      \subsubsection{Definition \bracketedname{#1}} #2
    }{}
    
    \begin{document}
    
    \begin{definition}{Definitionname}{Some text ...}
    \end{definition}
    
    \begin{definition}{}{Some More Text...}
    \end{definition}
    \end{document}

  4. #4
    Registrierter Benutzer Avatar von lockstep
    Registriert seit
    31.08.2008
    Beiträge
    1.487
    Das Beispiel von mechanicus läuft übrigens auch ohne Laden des Paketes ntheorem. ntheorem hilft allerdings bei der Formatierung deiner "Definition", z.B., wenn der eigentliche Text nicht kursiv gesetzt werden soll. Ergänze dazu mechanicus' Beispiel wie folgt:

    Code:
    \usepackage{ntheorem}
    \theorembodyfont{\normalfont}
    \newtheorem{definition}{Definition}
    lockstep
    idxlayout - Konfigurierbares Index-Layout, kompatibel mit KOMA-Script und memoir

Stichworte

Lesezeichen

Berechtigungen

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