¿Cómo se podría hacer un paquete que no entre en conflicto con los demás?

¿Cómo se podría hacer un paquete que no entre en conflicto con los demás?

Estoy trabajando en la construcción de un paquete de música y me gustaría tener nuevos comandos con nombres cortos para mayor claridad... Entonces, por ejemplo, uso ,, \barpero ya están definidos en ¿Hay algún truco para que todos estos comandos puedan ser? ¿Se usa al menos localmente con la forma que me gusta?\k\argLaTeX

En otras palabras, ¿es posible definir algunos comandos especiales dentro de mi paquete, por ejemplo, \mypackageONde \mypackageOFFmodo que si incluyo un texto con los comandos de inicio y fin anteriores no surja ningún problema con el uso de \baretc? ¿Existe una mejor estrategia? Disculpe por esta pregunta general...

Respuesta1

Podría proporcionar un entorno llamado, digamos myenv, que redefina \arg, \baretc. De esa manera, el alcance de las redefiniciones termina automáticamente en \end{myenv}.

Un ejemplo de trabajo sencillo:

\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}

Aquí hay una versión que usa "interruptores", llamados \mypackageONy \mypackageOFF, en lugar de un entorno. Según la sugerencia hecha por Ulrike en un comentario, el código primero guarda las versiones originales de \arg, \baretc., y las nuevas macros reciben prefijos de "música". Luego, \mypackageONactiva las versiones de las macros relacionadas con la música y \mypackageOFFactiva las versiones originales de las macros. ( \LetLtxMacrose usa en lugar de \let, en caso de que algunos de los comandos que se están redefiniendo tomen argumentos opcionales y/o hayan sido declarados "robustos".)

ingrese la descripción de la imagen aquí

\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}

información relacionada