PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Nummerierungsproblem



romanrt
11-08-2009, 15:42
Hallo zusammen,

ich bin immernoch daran mir meine eigene Formelumgebung zu basteln in der ich den \caption Befehl verwenden kann. Das funktioniert soweit ganz gut. Nun soll die Nummerierung noch gleich sein wie bei der fortlaufenden equationons Umgebung.

Um das ganze einfach zu halten habe ich ein Minimalbeispiel geschrieben. In dem Beispiel SOLLTE die Formel also Formula 3.2 heißen, und nicht wie es mit dem folgenden Code passiert, 3.2.1



%Minimalbeispiel
\documentclass[a4paper,11pt,oneside]{scrbook}
\usepackage[latin1]{inputenc}
\usepackage[english]{babel}
\usepackage[T1]{fontenc}
\usepackage[onehalfspacing]{setspace}
\usepackage{float}
%/...
\newfloat{formula}{H}{for}[equation]
\floatname{formula}{Formula}
\setlength{\parindent}{0cm}
\begin{document}
\listof{formula}{Formulary}

\part{Erster Teil}
\part{Zweiter Teil}
\chapter{Kapitel}
\chapter{Kapitel}
\chapter{Kapitel}
\section{Abschnitt}
\subsection{Subsection}


\begin{spacing}{1.3} \begin{eqnarray}
\underline{Z}_{in~open} & = & \left. \underline{Z}(0)\right|_{\underline{Z}_{2} \rightarrow \infty} \nonumber \\
& = & \left. \frac{ \underline{ \hat{u}}_{2}(0)} {\underline{\hat{i}}_{2}(0)}\right|_{\underline{Z} _{2} \rightarrow \infty} \nonumber \\
& = & \left. \frac
{
\frac{1}{\underline{\hat{u}}_{2}} \cdot \underline{\hat{u}}_{2} \cdot \cosh (\underline{\gamma} \cdot l) + \underline{Z}_{0} \cdot \overbrace{\frac{\underline{\hat{i}}_{2}}{\underli ne{\hat{u}}_{2}}}^{\frac{1}{\underline{z}}_{2} \rightarrow 0} \cdot \sinh (\underline{\gamma} \cdot l)
}
{
\underbrace{\frac{\underline{\hat{i}}_{2}}{\underl ine{\hat{u}}_{2}}}_{\frac{1}{\underline{Z}}_{2} \rightarrow 0} \cdot \cosh (\underline{\gamma} \cdot l) + \frac{\underline{\hat{u}}_{2}}{\underline{Z}_{0} \cdot \underline{\hat{u}}_{2}} \cdot \sinh (\underline{\gamma \cdot l})
}\right|_{\underline{Z}_{2} \rightarrow \infty}
\label{eq:InputImpedanceOfOpenCircuitedLineLossy}
\end{eqnarray} \end{spacing}



\begin{formula}
\begin{eqnarray}
\underline{Z}{0} \sqrt
{
\underline{Z}_{in~open} \cdot \underline{Z}_{in~short}
}
\label{eq:OpenShortMethod}
\end{eqnarray}
\caption{Open-Short-Method to determine the characteristic impedance measuring input impedances}
\end{formula}
\end{document}



Vielleicht hat ja jemand eine Idee was ich beim Anlegen der Umgebung falsch gemacht habe.

Viele Grüße

Roman

u_fischer
11-08-2009, 16:16
Gar nichts. \newfloat erzeugt einen eigenen Zähler. Du kannst zwar den neuen Zähler auf einen alten spiegeln, aber dann musst du in bei der \caption zurücksetzen. Grundsätzlich finde ich die Idee etwas seltsam.

\documentclass[a4paper,11pt,oneside]{scrbook}
\usepackage[latin1]{inputenc}
\usepackage[english]{babel}
\usepackage[T1]{fontenc}

\usepackage{float}

\newfloat{formula}{H}{for}
\makeatletter
\let\c@formula\c@equation
\makeatother
\floatname{formula}{Formula}
\begin{document}
\setcounter{part}{3}
\setcounter{chapter}{10}
\begin{eqnarray}
a
\label{eq:A}
\end{eqnarray}

\begin{formula}
\begin{eqnarray}
b
\label{eq:B}
\end{eqnarray}
\addtocounter{formula}{-1}
\caption{Open-Short-Method}
\end{formula}

\begin{eqnarray}
a
\end{eqnarray}
\end{document}

bobmalaria
11-08-2009, 17:07
hi,

noch eine kleine anmerkung. die eqnarry umgebung sollte man nicht mehr verwenden. besser ist es das amsmath paket einzubinden und mit equation,align usw. zu arbeiten.

gruss

romanrt
13-08-2009, 08:38
Hallo Bob,

da hast Du sicherlich Recht. Aber als Anfänger habe ich ein "book" angefangen in dem nun schon hunderte von Gleichungen und Formeln sind, die ich ohne das AMS-Paket erstellt habe. Das lässt sich jetzt leider nicht alles so einfach (Suchen/Ersetzen eqnarray --> align) umstellen. Nächstes Mal bin ich schlauer ;-)

romanrt
13-08-2009, 08:52
Gar nichts. \newfloat erzeugt einen eigenen Zähler. Du kannst zwar den neuen Zähler auf einen alten spiegeln, aber dann musst du in bei der \caption zurücksetzen. Grundsätzlich finde ich die Idee etwas seltsam.


Hallo Ulrike.
Gibt es die Möglichkeit den neu erstellten Zähler ("Formelzähler") einfach um den letzten Punkt sowie die letzte Ziffer zu kürzen? Dann würde das genau meinen Zweck erfüllen?

Beste Grüße

u_fischer
13-08-2009, 09:47
\let\theformula\theequation

romanrt
13-08-2009, 10:08
Das funktioniert wunderbar. Vielen Dank.

Jetzt habe ich noch ein kleines Problem bei der Erstellung meines Formelverzeichnisses. Ich erstelle dieses mit


\begin{document}
\maketitle
\tableofcontents
\listoffigures
\listoftables
\listof{formula}{Formulary}


Da ich jedoch die Klasse Buch verwende und die "Parts" angepasst habe (Nummerierung wie bei section), musste ich das Tabellen-, Abbildungs- und Inhaltsverzeichnis anpassen.

Das habe ich beispielsweise für das Tabellenverzeichnis folgendermaßen getan:



\makeatletter
\renewcommand*{\l@table}{\@dottedtocline{1}{1.5em} {2.9em}}
\makeatother


Das funktioniert wunderbar.

Wie kann ich so etwas nun für mein Formelverzeichnis machen? Muss ich dazu erst ein /listofformula anlegen oder kann ich das auch mit der quick and dirty-Methode machen die ich bisher für das Formelverzeichnis verwendet habe?

Viele Grüße und tausend Dank,

Roman

romanrt
17-08-2009, 10:58
---push---

rais
17-08-2009, 19:08
Moin moin,


Das habe ich beispielsweise für das Tabellenverzeichnis folgendermaßen getan:



\makeatletter
\renewcommand*{\l@table}{\@dottedtocline{1}{1.5em} {2.9em}}
\makeatother


Das funktioniert wunderbar.

Wie kann ich so etwas nun für mein Formelverzeichnis machen? Muss ich dazu erst ein /listofformula anlegen oder kann ich das auch mit der quick and dirty-Methode machen die ich bisher für das Formelverzeichnis verwendet habe?

ginge das nicht analog?


\makeatletter
\renewcommand*{\l@table}{\@dottedtocline{1}{1.5em} {2.9em}}
\renewcommand*\l@formula{...}
\makeatother

Ansonsten schau Dir mal Pakete wie titletoc oder tocloft an.

MfG

romanrt
18-08-2009, 09:09
Das funktioniert nicht. Die Fehlermeldung sagt, dass die Umgebung formula nicht vorhanden ist. Da bin ich mit meinem Anfängerlatein mal wieder am Ende. :-(

rais
18-08-2009, 11:11
Moin moin,

Das funktioniert nicht. Die Fehlermeldung sagt, dass die Umgebung formula nicht vorhanden ist.
oh, float definiert den entsprechenden \l@formula-Befehl erst innerhalb des \listof-Befehls ...


\makeatletter
\renewcommand*{\listof}[2]{%
\@ifundefined{ext@#1}{\float@error{#1}}{%
\@namedef{l@#1}{\@dottedtocline{1}{1.5em}{2.9em}}%<--
\float@listhead{#2}%
\begingroup\setlength{\parskip}{\z@}%
\@starttoc{\@nameuse{ext@#1}}%
\endgroup}}
\makeatother

obwohl, wenn Du scrhack lädst, sieht die Definition vermutlich anders aus.

Hier mal ein Ansatz auf NeuKOMAnisch [1]:


\documentclass{scrbook}
\usepackage[latin1]{inputenc}
\usepackage[english]{babel}
\usepackage[T1]{fontenc}

\makeatletter
\newenvironment{formula}{\@float{formula}}{\end@fl oat}
\newcommand*\fps@formula{hbp}
\newcommand*\ftype@formula{4}
\newcounter{formula}[chapter]
\renewcommand\theformula{\thechapter.\arabic{formu la}}
\newcommand*\formulaformat{Formula~\theformula\aut odot}
\newcommand*\fnum@formula{\formulaformat}
\newcommand*\ext@formula{for}
\addtotoclist[float]{\ext@formula}
\@namedef{listof\ext@formula name}{Formulary}
\newcommand*\l@formula{\l@table}
\setuptoc{\ext@formula}{chapteratlist}
\newcommand*\listofformulas{\listoftoc{\ext@formul a}}
\makeatother
\begin{document}
\listofformulas
\listoftables
\chapter{Test}
\begin{formula}
\begin{equation}
a
\end{equation}
\caption{Testformel}
\end{formula}

\begin{table}
a
\caption{Testtabelle}
\end{table}
\chapter{Test 2}
\begin{formula}
\begin{equation}
b
\end{equation}
\caption{Testformel 2}
\end{formula}

\begin{table}
b
\caption{Testtabelle 2}
\end{table}
\end{document}

also unter Verwendung des tocbasic-Pakets, das von scrbook eh geladen wird, vgl. `texdoc scrguide', Kapitel 12.

[1] KOMA ab Version 3

MfG

sommerfee
18-08-2009, 13:15
oh, float definiert den entsprechenden \l@formula-Befehl erst innerhalb des \listof-Befehls ...

(Eigenwerbung an)

\DeclareCaptionType des caption-Paketes aber nicht. Damit sollte es also gehen.

(Eigenwerbung aus)

Liebe Grüße,
Axel

rais
19-08-2009, 14:28
Moin Axel,


\DeclareCaptionType des caption-Paketes aber nicht. Damit sollte es also gehen.

stimmt -- danke für denTip!

@Roman: das vereinfacht die Sache in etwa zu


\documentclass{scrbook}
\usepackage[latin1]{inputenc}
\usepackage[english]{babel}
\usepackage[T1]{fontenc}
\usepackage{caption}
\DeclareCaptionType[fileext=for,placement=hbp,within=chapter]{formula}[Formula][Formulary]
\makeatletter
\renewcommand*\l@table{\@dottedtocline{1}{1.5em}{2 .9em}}
\renewcommand*\l@formula{\l@table}
\makeatother
\begin{document}
\listofformulas
\listoftables
%etc. ... wie zuvor
\end{document}

MfG

romanrt
19-08-2009, 14:32
Ich danke euch vielmals!!!
Leider kann ich das hier jetzt momentan nicht testen. Aber morgen bin ich wieder an meinem Arbeitsplatz. Dann werde ich euch von meinen Erfolgen berichten!

Vielen Dank!

romanrt
20-08-2009, 10:48
Also nach ein paar Versuchen muss ich feststellen, dass die \DeclareCaptionType Anweisung aus irgendeinem Grund nicht funktioniert. Trotz laden des caption Paketes sagt mein Compiler Undefined control sequence :-(

Ist sicherlich kein schwerwiegendes Problem, jedoch konnte ich in der Doku (ftp://dante.ctan.org/tex-archive/macros/latex/contrib/caption/caption-deu.pdf) zum caption Paket keinen Hinweis darauf finden warum das bei mir so ist. Weiß jemand Rat?

romanrt
20-08-2009, 10:53
Also gut, ich aktualisiere mein caption Paket [2003/12/20] :-)