Wie kann man ein Paket erstellen, das nicht mit anderen in Konflikt gerät?

Wie kann man ein Paket erstellen, das nicht mit anderen in Konflikt gerät?

Ich arbeite an der Erstellung eines Musikpakets und hätte gerne neue Befehle mit Kurznamen, der Übersichtlichkeit halber … Ich verwende also beispielsweise \bar, \k, \argaber sie sind bereits in definiert. LaTeXGibt es einen Trick, damit alle diese Befehle zumindest lokal so verwendet werden können, wie ich es möchte?

Mit anderen Worten: Ist es möglich, einige spezielle Befehle in meinem Paket zu definieren, sodass beispielsweise, \mypackageONwenn \mypackageOFFich einen Text mit den oben genannten Start-End-Befehlen einschließe, keine Probleme bei der Verwendung \barusw. auftreten? Gibt es eine bessere Strategie? Entschuldigen Sie diese allgemeine Frage ...

Antwort1

Sie könnten beispielsweise eine Umgebung mit dem Namen bereitstellen, myenvdie , , usw. neu definiert. \argAuf \bardiese Weise endet der Umfang der Neudefinitionen automatisch mit \end{myenv}.

Ein einfaches funktionierendes Beispiel:

\documentclass{article}
\usepackage[T1]{fontenc} % Enable "\k" ("ogonek") macro

\newenvironment{myenv}{%
   % Provide (re)definitions of \arg, \bar, etc
   \def\arg{...}
   \def\bar{...}
   \def\k{...}}{}

\begin{document}
$\arg a$, $\bar{b}$, \k{c}

\begin{myenv}
\arg a, \bar{b}, \k{c}
\end{myenv}

$\arg a$, $\bar{b}$, \k{c}
\end{document}

Hier ist eine Version, die „Switches“ – benannt \mypackageONund \mypackageOFF– anstelle einer Umgebung verwendet. Gemäß dem Vorschlag von Ulrike in einem Kommentar speichert der Code zuerst die Originalversionen von \argusw. \barund die neuen Makros erhalten „Musik“-Präfixe. Dann \mypackageONaktiviert die musikbezogenen Versionen der Makros und \mypackageOFFaktiviert die Originalversionen der Makros. ( \LetLtxMacrowird anstelle von verwendet \let, nur für den Fall, dass einige der neu definierten Befehle optionale Argumente annehmen und/oder als „robust“ deklariert wurden.)

Bildbeschreibung hier eingeben

\documentclass{article}
\usepackage[T1]{fontenc} % Enable "\k" macro ("ogonek")

% Save the old versions of the macros
\usepackage{letltxmacro} % for "\LetLtxMacro" command
\LetLtxMacro\origarg\arg
\LetLtxMacro\origbar\bar
\LetLtxMacro\origk\k

% Define some new macros
\newcommand\musicarg[1]{#1} % "#1" just regurgitates the argumenet
\newcommand\musicbar[1]{#1}
\newcommand\musick[1]{#1}

\newcommand\mypackageON{% enable the music-related versions
   \LetLtxMacro\arg\musicarg
   \LetLtxMacro\bar\musicbar
   \LetLtxMacro\k\musick}

\newcommand\mypackageOFF{% enable the original versions
   \LetLtxMacro\arg\origarg
   \LetLtxMacro\bar\origbar
   \LetLtxMacro\k\origk}

\begin{document}
$\arg a$, $\bar{b}$, \k{c}

\mypackageON
\arg a, \bar{b}, \k{c}

\mypackageOFF
$\arg a$, $\bar{b}$, \k{c}
\end{document}

verwandte Informationen