PDA

View Full Version : command already defined



momo
15-07-2010, 21:06
Hallo,

für das Anzeigen der folgenden Tabelle verwende ich das Symbol \lcurvearrowdown aus dem Paket "MnSymbol". Ich muß dazu aber meine vordefinierten Symbole aus dem amsmath Paket in meiner Präämbel auskommentieren.
Kann mir jemand den Beispiel-Code so modifizieren, dass ich die beiden newcommand-Befehle nicht auskommentieren muß?

Ich brauche das Paket MnSymbol nur temporär - eben in dieser Tabelle.

Danke für eure Hilfe
Annette



\usepackage{amsmath}
\usepackage{MnSymbol}
\usepackage{multirow}

%\newcommand {\dint}{\mathlarger{\int}} % angepaßtes Integralzeichen
%\newcommand {\dsum}{\mathlarger{\sum}} % angepaßtes Summenzeichen

\begin{document}
\begin{array}[t]{c|c|c}
\textrm{Anzahl - Bohrer} &\textrm{Geld - Euro} \\
\hline
26 &x+3 & \multirow{2}{*}{$\lcurvearrowdown :26$} \\
1 &\frac{x+3}{26} & \\
\hline
16 &x-2 & \multirow{2}{*}{$\lcurvearrowdown :16$} \\
1 &\frac{x-2}{16} & \\
\end{array}
\end{document}

Stefan_K
15-07-2010, 21:18
Hallo Annette,

Du könntest \renewcommand statt \newcommand verwenden.

Viele Grüße,

Stefan

momo
15-07-2010, 21:27
danke, Stefan. Sollte ich also immer renewcommand verwenden, um ein solches
Problem zu umgehen?
Wenn ich aber \dint in meiner Tabelle dann ebenfalls verwenden will, kommt die Fehlermeldung "undefined control sequence" Wie löse ich das?

Stefan_K
15-07-2010, 21:52
Sollte ich also immer renewcommand verwenden, um ein solches Problem zu umgehen?
Je nachdem. \renewcommand würde gar nicht funktionieren, wenn das Kommando noch gar nicht definiert ist.


Wenn ich aber \dint in meiner Tabelle dann ebenfalls verwenden will, kommt die Fehlermeldung "undefined control sequence" Wie löse ich das?

Vielleicht hast Du das dafür notwendige Paket relsize nicht eingebunden.
\mathlarger ist übrigens abhängig vom Kontext, \dint kann also verschieden groß werden. Vielleicht möchtest Du ja \displaystyle stattdessen verwenden.

Stefan

momo
15-07-2010, 22:06
Vielleicht hast Du das dafür notwendige Paket relsize nicht eingebunden.
.. stimmt das habe ich nicht. Woran kann ich denn erkennen, das ich das muß?

Kann ich den Befehl "\lcurvearrowdown" nicht auch irgendwie nur lokal definieren (kapseln)- nur für die zwei benötigten Codezeilen, ansonsten gelten alle vordefinierten Befehle?

Danke und Gruß
Annette

Stefan_K
15-07-2010, 22:25
.. stimmt das habe ich nicht. Woran kann ich denn erkennen, das ich das muß?

Daran, dass sich die Fehlermeldung "undefined control sequence" auf den Befehl \mathlarger bezieht, der zu diesem Paket gehört.


Kann ich den Befehl "\lcurvearrowdown" nicht auch irgendwie nur lokal definieren (kapseln)- nur für die zwei benötigten Codezeilen, ansonsten gelten alle vordefinierten Befehle?

Möglicherweise, das müsste man mal im Quellcode von MnSymbol nachsehen. Dort sollte es ja definiert sein. U.U. kann man sich dies und ggf. noch verwendetes herauskopieren.

Stefan

momo
15-07-2010, 23:06
.. das klingt aufwendig -

Einfacher ist es also der Fehlermeldung nachzugehen:
LaTeX Error: "Command \dint already defined
"Or name \end... illegal, see p.192 of the manual."

- Welches manual ist hier gemeint?

"1.7 \newcommand {\dint}{\mathlarger{\int}}"
- hier kann man dann erkennen, dass das Problem bei \mathlarger liegt.

- ok, aber warum kamen und kommen diese Fehlermeldungen nicht, wenn ich ohne das zusätzliche Paket "MnSymbol" arbeite?

Danke für Deine Antwort -
Annette

Stefan_K
16-07-2010, 14:00
Hallo Annette,



LaTeX Error: "Command \dint already defined
"Or name \end... illegal, see p.192 of the manual."
- Welches manual ist hier gemeint?
Ich nehme an, es ist "LaTeX - A Document Preparation System / User's Guide and Referende Manual" gemeint, von Leslie Lamport, dem ursprünglichen Entwickler von LaTeX.
Auf der genannten Seite 192 steht darin zum Namen eines Kommandos: "For \newcommand it ... must not begin with \end". Das trifft hier nicht zu, sondern erstere Zeile der Fehlermeldung.



- ok, aber warum kamen und kommen diese Fehlermeldungen nicht, wenn ich ohne das zusätzliche Paket "MnSymbol" arbeite?
Weil dann der Name \dint noch "frei" ist. Erst MnSymbol verwendet ihn, wodurch es zu der Doppelverwendung bei eigener Definition unter demselben Namen kommt.

Stefan

momo
17-07-2010, 14:20
Hallo Stefan,

erst mal vielen Dank für Deine klare Antwort und Entschuldigung, dass ich erst jetzt antworte, aber ich war gestern nicht online.

Zum Hintergrund meiner Frage: Ich bin dabei mathematische Arbeitsblätter und Foliensätze zu erstellen. Dazu habe ich eine Datei Definitions.tex (für die Definitionen) und eine Datei Header.tex (für die Pakete), die ich beide in jeder Datei mit \input einfüge. Mit diesen beiden Dateien will ich eigentlich alle meine verwendeten eigenen Definitionen steuern, aber das geht wohl dann so nicht...:(

Ich füge zwei lauffähige Dateien, die jeweils eine Beipielseite enthalten an:
Analysis.tex - enthält Integralzeichen und läßt sich fehlerfrei übersetzen
Arithmetik.tex - verwendet die 'krummen' Pfeile aus dem Paket MnSymbol und läßt sich nur dann übersetzen, wenn ich in Defintions.tex Zeile 91 + 92 (\newcommand {\dint}..) auskommentiere.

Wie kann ich das lösen - bzw. wie löst man das, mit diesen Problemen schlagen sich doch auch andere herum, oder???

Bin sehr dankbar für jede Hilfe und auch für andere (konstruktive!) Vorschläge, die mir helfen den Überblick zu behalten und die Organisation meiner Dateien zu verbessern (auch Hinweise auf Doku Bücher)

Grüße
Annette

nixversteh
18-07-2010, 10:39
Hallo Stefan,

erst mal vielen Dank für Deine klare Antwort und Entschuldigung, dass ich erst jetzt antworte, aber ich war gestern nicht online.

Zum Hintergrund meiner Frage: Ich bin dabei mathematische Arbeitsblätter und Foliensätze zu erstellen. Dazu habe ich eine Datei Definitions.tex (für die Definitionen) und eine Datei Header.tex (für die Pakete), die ich beide in jeder Datei mit \input einfüge. Mit diesen beiden Dateien will ich eigentlich alle meine verwendeten eigenen Definitionen steuern, aber das geht wohl dann so nicht...:(

Ich füge zwei lauffähige Dateien, die jeweils eine Beipielseite enthalten an:
Analysis.tex - enthält Integralzeichen und läßt sich fehlerfrei übersetzen
Arithmetik.tex - verwendet die 'krummen' Pfeile aus dem Paket MnSymbol und läßt sich nur dann übersetzen, wenn ich in Defintions.tex Zeile 91 + 92 (\newcommand {\dint}..) auskommentiere.

Wie kann ich das lösen - bzw. wie löst man das, mit diesen Problemen schlagen sich doch auch andere herum, oder???

Bin sehr dankbar für jede Hilfe und auch für andere (konstruktive!) Vorschläge, die mir helfen den Überblick zu behalten und die Organisation meiner Dateien zu verbessern (auch Hinweise auf Doku Bücher)

Grüße
Annette

Guten Morgen Annette,

wenn ich deine Dateien mit Texmaker kompiliere, erscheint zwar bei der Datei Arithmetik.tex eine Fehlermeldung, aber ich erhalte eine lesbare PDF-Datei. Ist zwar keine Lösung, aber ich habe eine PDF ... Bin leider nur Laie, was ich sagen möchte ist, wenn auch Fehlermeldungen erscheinen, solange ein brauchbarer Ausdruck erscheint ...

Gruß

Martin

rais
18-07-2010, 11:43
Moin moin,


Ich füge zwei lauffähige Dateien, die jeweils eine Beipielseite enthalten an:
Analysis.tex - enthält Integralzeichen und läßt sich fehlerfrei übersetzen
Arithmetik.tex - verwendet die 'krummen' Pfeile aus dem Paket MnSymbol und läßt sich nur dann übersetzen, wenn ich in Defintions.tex Zeile 91 + 92 (\newcommand {\dint}..) auskommentiere.

Wie kann ich das lösen - bzw. wie löst man das, mit diesen Problemen schlagen sich doch auch andere herum, oder???

nun ja, je mehr Pakete ins Spiel kommen, umso wahrscheinlicher wird es, daß ein Befehl bereits definiert ist.
Aber wo ist das Problem? Du könntest Dir doch neue Namen einfallen lassen -- die meisten Editoren unterstützen `suchen und ersetzen' ...
Du könntest es natürlich auch übers Knie brechen, etwa


\usepackage{MnSymbol}
\let\dint\Undefined
\let\dsum\Undefined
\input {Definitions}

(vorausgesetzt, \Undefined ist nicht irgendwo definiert)

MfG

momo
18-07-2010, 19:21
Hallo Rainer, hallo Martin,

ja das ist genau mein Problem, was Rainer beschreibt. Das bedeutet also:
Profis ;) würden das so handhaben:
In der Präambel einen neuen Befehl definieren und diesen in allen vorhandenen Script-Dateien ersetzen ?

.. ehrlich gesagt hätte ich das nicht so einfach gemacht, nach dem Prinzip
"never change a runnig system"...

Also ok - wenn Ihr noch einen weiteren konstruktiven Tipp habt zu meiner Arbeitsweise - Beispiel-Script habe ich ja beigefügt - dann freu' ich mich immer drüber!

Noch mal danke - auch für mutmachende Worte, wie die vom Martin!

Annette

nixversteh
18-07-2010, 20:42
Hallo Rainer, hallo Martin,
ja das ist genau mein Problem, was Rainer beschreibt. Das bedeutet also:
Profis ;) würden das so handhaben:
In der Präambel einen neuen Befehl definieren und diesen in allen vorhandenen Script-Dateien ersetzen ?
.. ehrlich gesagt hätte ich das nicht so einfach gemacht, nach dem Prinzip
"never change a runnig system"...
Also ok - wenn Ihr noch einen weiteren konstruktiven Tipp habt zu meiner Arbeitsweise - Beispiel-Script habe ich ja beigefügt - dann freu' ich mich immer drüber!
Noch mal danke - auch für mutmachende Worte, wie die vom Martin!
Annette

Guten Abend Annette,

setz mal bitte diesen Code vor \begin{document } in deine Datei Arithmetik.tex ein:


\usepackage{savesym}
\savesymbol{dint}
\savesymbol{dsum}

Quelle: http://www.tex.ac.uk/cgi-bin/texfaq2html?label=alreadydef

Auf meinem PC (Linux amd64, Texlive 2009, Texmaker und TexmakerX, sowie den anderen Editoren) läuft dann deine Datei Arithmetik.tex fehlerfrei durch.

Wünsche dir einen schönen Abend.


Gruß
Martin

momo
18-07-2010, 21:03
Guten Abend, Martin!

Ja!!! Das ist genau das, was ich gesucht habe!

Und der Link beschreibt das ja auch genau!
(und: ..damit hab' ich nun auch wieder mal ein Stückchen Glauben gewonnen, das Latex für mich die richtige Lösung ist)

Hab' vielen, vielen Dank!!!
Annette