Por lo que sé, no hay una respuesta general muy buena para esto. Pero hay varias técnicas que puedes probar para cualquier comando dado. En el caso de \qquad
, es parte de TeX básico. Recuerde que siempre puede usar TeX en modo interactivo:
$ tex '\show\qquad'
This is TeX, Version 3.141592 (Web2C 7.5.6)
> \qquad=macro:
->\hskip 2em\relax .
\show\qquad
? x
No pages of output.
Algunas macros se agregan de látex en la parte superior de TeX, tales como \begin
:
$ tex '\show\begin'
This is TeX, Version 3.141592 (Web2C 7.5.6)
> \begin=undefined.
\show\begin
? x
No pages of output.
mientras que
$ latex '\show\begin'
This is pdfTeXk, Version 3.141592-1.40.3 (Web2C 7.5.6)
%&-line parsing enabled.
entering extended mode
LaTeX2e
Babel and hyphenation patterns for english, usenglishmax, dumylang, noh
yphenation, greek, monogreek, ancientgreek, ibycus, pinyin, loaded.
> \begin=macro:
#1->\@ifundefined {#1}{\def \[email protected] {\@[email protected] {Environment #1 undefine
d}\@eha }}{\def \[email protected] {\def \@currenvir {#1}\edef \@currenvline {\[email protected]
}\csname #1\endcsname }}\@ignorefalse \begingroup \@endpefalse \[email protected] .
\show\begin
? x
No pages of output.
Todo lo demás viene de paquetes. Si realmente quieres saber de qué paquete proviene una macro (que no sea google o grepping tu árbol texmf), puedes verificar después de cada paquete que cargues si está definido. Intenta definir esto antes de cualquier \usepackage
comandos:
\let\oldusepackage\usepackage
\renewcommand\usepackage[1]{
\oldusepackage{#1}
\ifcsname includegraphics\endcsname
\message{^^Jincludegraphics is defined in #1^^J}
\let\usepackage\oldusepackage
\fi}
A continuación, cuando se ejecuta latex
en su archivo de .tex
, busque una línea en la salida que dice includegraphics is defined in graphicx
. No es probable, pero algunos paquetes desviados pueden hacer cosas malas con \usepackage
, por lo que existe la posibilidad de que esto no funcione.Otra alternativa sería simplemente definir el comando que le interesa antes de cargar los paquetes:
\newcommand\includegraphics{}
Entonces es posible que obtenga un mensaje de error cuando el paquete que define el comando es de carga. Esto es realmente menos confiable que el anterior, ya que muchos paquetes usan \def
y \let
para definir sus macros en lugar de \newcommand
, sin pasar por la verificación "ya definida". También podría simplemente insertar un cheque a mano entre cada carga:
\ifcsname includegraphics\endcsname\message{^^Jdefined after graphicx^^J}\fi
'\ qquad' proviene de TeX (es decir, desde el núcleo mismo), por lo que no es necesario ningún paquete especial de LaTeX que le permita usarlo. –
Noram: Soy un poco OCD así. Me gusta saber el paquete original y la documentación para cualquier comando que uso. Hago lo mismo con MSDN cuando uso las API de Microsoft. –