PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : \addcommand - Neuer Latexbefehl?



ctansearch
21-08-2012, 00:58
Hallo,
ich überlege gerade, einen neuen Latexbefehl zu definieren, der es ermöglicht, neue Befehle in einen beliebigen Latex-Befehl einzubringen.

Bislang muß man, um neue Funktionen einzubringen, den ganzen Befehl per \renewcommand modifizieren, man muß ihn also im ganzen kopieren und die eigenen Änderungen einarbeiten oder man muß das gesamte Paket umarbeiten und als neues Paket veröffentlichen.

Schöner und effizienter wäre es, man könnte einzelne Pakete und Befehle direkt ansteuern und Modifikationen einbringen, indem man die Pakete und Befehle identifiziert und die Modifikationen an der richtigen Stelle einbringt. Dies scheitert natürlich daran, daß in den Paketen kein Platzhalter für solche Modifikationen vorgesehen ist, man also nicht die Möglichkeit hat, solche Änderungen direkt zu platzieren.
Nun könnte man in jedes Paket und jeden Befehl einen solchen Platzhalter einfügen, was aber angesichts der Menge der Pakete zwar nicht undurchführbar ist, aber mit einem sehr großen Aufwand verbunden wäre.

Die beste Möglichkeit wäre, Pakete zu identifizieren und Kommandos unwirksam zu zitieren (d.h nur den Inhalt zu übernehmen) und die neuen Kommandos anzuhängen.

Ich stelle mir das ungefähr so vor:



\ifpackage = \package
\ifcommand = \command
\addcommand{\citecommand \mycommand{xxx} \mycommand{yyy}}
\fi\fi


Hat jemand eine Idee dazu?

rais
21-08-2012, 08:19
Moin moin,


ich überlege gerade, einen neuen Latexbefehl zu definieren, der es ermöglicht, neue Befehle in einen beliebigen Latex-Befehl einzubringen.

Bislang muß man, um neue Funktionen einzubringen, den ganzen Befehl per \renewcommand modifizieren, man muß ihn also im ganzen kopieren und die eigenen Änderungen einarbeiten oder man muß das gesamte Paket umarbeiten und als neues Paket veröffentlichen.

nö, muss man nicht. Der LaTeX-Kern stellt für sowas \g@addto\macro bereit. Soll die (Neu)Definition die Gruppe nicht verlassen, in der sie getätigt wird, hat man mit KOMA auch ein \l@addto@macro. Beide sind afair nur für ein Anhängen an parameterlose Makros gedacht -- da gibt's dann noch \apptocmd, \patchcmd (und viele andere mehr) aus dem etoolbox-Paket ...

MfG

sommerfee
21-08-2012, 09:22
da gibt's dann noch \apptocmd, \patchcmd (und viele andere mehr) aus dem etoolbox-Paket ...
...und auch schon zu nicht-e-TeX-Zeiten konnte man Makros gezielt patchen, wenn auch nur mit Hindernissen. Man schaue sich z.B. einfach mal an, wie das hyperref-Paket \LT@start oder \LT@array patcht, und das nur mit TeX-Bordmitteln.