Bestimmte Worte ersetzen

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: Bestimmte Worte ersetzen

von Gast » Mi 23. Nov 2016, 10:31

Endlich einmal einer, der verstanden hat, wozu Definitionen von Befehlen gut sind. Es sei jedoch empfohlen, Befehlsnamen nicht allzu kryptisch zu halten. Ja, ich weiß, kürzer ist schneller getippt.

Jetzt noch den Status aktuell halten und wir haben hier ein neues, wertvolles Mitglied.

von CallMeBW » Mi 23. Nov 2016, 10:04

Vielen Dank für dieses Beispiel.

damit hat alles geklappt. ich habe jetzt noch zwei neue Befehle erstellt:
\newcommand{\refzahlwort}[1]{%
  \zahlwort{\refchapterasnum{#1}}%
}
und
\newcommand{\lbl}[1]{
  \label{#1}\zlabel{#1}
}
Das erlaubt mir das Beschriften von Chapters wie folgt zu schreiben:
\lbl{chap:zwei}
und die Referenzen folgendermaßen:
\refzahlwort{chap:zwei}

von u_fischer » Di 22. Nov 2016, 23:52

\documentclass[11pt]{scrreprt}
\usepackage[user,counter]{zref}
\makeatletter
\zref@newprop{chapter}[1]{\the\c@chapter}
\zref@addprop{main}{chapter}
\newcommand\refchapterasnum[1]{\zref@extractdefault {#1} {chapter} {0}}
\makeatother


\newcommand{\zahlwort}[1]{%
   \ifcase #1\relax
     #1.%
   \or
      erste%
   \or
      zweite%
   \or
      dritte%
  \or
      vierte%
  \or
      fünfte%
  \or
      sechste%
  \or
      siebte%
  \or
      achte%
  \or
      neunte%
  \or
      zehnte%
  \or
      elfte%
  \or
      zwölfte%
   \else
      #1.%
   \fi
}

\begin{document}
\zahlwort{0}\\
%\zahlwort{dasistkeineZahl}
\zahlwort{1}\\
\zahlwort{2}\\
\zahlwort{3}\\
\zahlwort{4}\\
\zahlwort{5}\\
\zahlwort{6}\\
\zahlwort{7}\\
\zahlwort{8}\\
\zahlwort{9}\\
\zahlwort{10}\\
\zahlwort{11}\\
\zahlwort{12}\\
\zahlwort{13}\\

\chapter{Kapitel Eins}
\label{chap:eins}
Das ist ein Text in Kapitel \ref{chap:eins}.

Folgendes funktioniert: Im \zahlwort{2}n Kapitel geht es um was anderes.

Folgendes hingegen nicht: Im \zahlwort{\refchapterasnum{chap:zwei}}n Kapitel geht es um was anderes.
\chapter{Kapitel Zwei}
\label{chap:zwei}\zlabel{chap:zwei}
\end{document} 

von CallMeBW » Di 22. Nov 2016, 23:02

Nun habe ich mal ein Minimalbeispiel aufgesetzt.
Anhand des Codes sieht man, wie schön bereits die Funktion für das zuordnen von Zahlworten funktioniert. Mir ist allerdings nicht klargeworden, wie ich zref verwenden kann. ein Benutzer schlägt vor,
\zref@newprop{chapter}{\thechapter}
zu verwenden. Das hat aber nicht geklappt.

Ich hoffe, mir kann jemand helfen, das Problem vollends fertig zu lösen. Schließlich habe ich die Frage ja gestellt, weil ich es selbst nicht hinbekommen habe. Das Minimalbeispiel kann dafür gerne als Voraussetzung genommen werden :)
\documentclass[11pt]{scrreprt}
\usepackage[user]{zref}


\newcommand{\zahlwort}[1]{%
   \ifcase #1\relax
     #1.%
   \or
      erste%
   \or
      zweite%
   \or
      dritte%
  \or
      vierte%
  \or
      fünfte%
  \or
      sechste%
  \or
      siebte%
  \or
      achte%
  \or
      neunte%
  \or
      zehnte%
  \or
      elfte%
  \or
      zwölfte%
   \else
      #1.%
   \fi
}

\begin{document}
\zahlwort{0}\\
%\zahlwort{dasistkeineZahl}
\zahlwort{1}\\
\zahlwort{2}\\
\zahlwort{3}\\
\zahlwort{4}\\
\zahlwort{5}\\
\zahlwort{6}\\
\zahlwort{7}\\
\zahlwort{8}\\
\zahlwort{9}\\
\zahlwort{10}\\
\zahlwort{11}\\
\zahlwort{12}\\
\zahlwort{13}\\

\chapter{Kapitel Eins}
\label{chap:eins}
Das ist ein Text in Kapitel \ref{chap:eins}.

Folgendes funktioniert: Im \zahlwort{2}n Kapitel geht es um was anderes.

Folgendes hingegen nicht: %Im \zahlwort{\ref{chap:zwei}}n Kapitel geht es um was anderes.
\chapter{Kapitel Zwei}
\label{chap:zwei}
\end{document}
[/code]
Dateianhänge
Anbei der Output des Minimalbeispiels
Anbei der Output des Minimalbeispiels
output.png (9.85 KiB) 4299 mal betrachtet

von u_fischer » Di 22. Nov 2016, 11:01

Wäre nett wenn du mir zeigen könntest wie man das mit zref umsetzt.
Es wäre nett, wenn du etwas Eigeninitiative zeigen würdest und nicht alle Arbeit auf die anderen abschiebst.

zref hat eine Dokumentation und ein Minimalbeispiel hast du auch nicht geliefert.

https://tex.stackexchange.com/search?q=zref+chapter[/code]

von CallMeBW » Di 22. Nov 2016, 10:56

kann ich zref dann auch mit einem label verwenden? Denn ich möchte ja nicht nur über das aktuelle Kapitel schreiben, sondern bspw. in Kapitel 1 auf das zweite Kapitel verweisen?!
Wäre nett wenn du mir zeigen könntest wie man das mit zref umsetzt.

von u_fischer » Di 22. Nov 2016, 10:17

Du kannst mit zref die Zählerstände der counter abspeichern und dann abfragen.

von CallMeBW » Di 22. Nov 2016, 10:12

Danke, das funktioniert schonmal klasse. Jetzt stehe ich allerdings vor der nächsten Schwierigkeit, die ich nicht bedacht hatte :D

Und zwar möchte ich gerne den Satz "Im zweiten Kapitel wird die Funktionsweise beschrieben" mit meiner neuen Funktion ersetzen:
Im \zahlwort{\ref{grundlagen}n Kapitel wird die Funktionsweise beschrieben
.
Das Problem ist, dass die Funktion eine Zahl erwartet, aber \ref{} gibt ein String zurück (Es könnte sich ja um Kapitel 2.2 handeln, dann ist das natürlich keine gültige Zahl).
ich möchte die Funktion aber tatsächlich nur mit chaptern verwenden, deren Referenz eine Zahl ist. In meinem Dokument liefert bspw.
\ref{grundlagen} %liefert "2" zurck
die Zahl zwei zurück.
Ich bräuchte also entweder eine Möglichkeit, de String in eine zahl umzuwandeln, oder ein ifcase-Konstrukt, das mit String umgeht :D

Wie könnte man das lösen?

von Gast » Di 22. Nov 2016, 08:16

Statt die Zahl extra um eins zu vermindern, kann man den ersten Fall natürlich auch einfach leer lassen oder mit einer Fehlermeldung versehen oder "null" zurück geben oder ….
\newcommand{\zahlwort}[1]{%
   \ifcase #1\relax
     null% oder #1% oder Fehlermeldung
   \or
      eins%
   \or
      zwei%
   \or
      drei%
   \else
      #1%
   \fi
}

von CallMeBW » Mo 21. Nov 2016, 23:11

Nabend Tobi,

vielen Dank für die schnelle und tolle Antwort. Wird gleich morgen früh umgesetzt ;)

Nach oben