Comandos para ayudar a la indexación

Comandos para ayudar a la indexación

Quiero tener formas más fáciles de indexar textos grandes como tesis, informes, libros. Encontré muchas publicaciones aquí pidiendo alguna herramienta mágica para hacerlo automáticamente. Y por lo que pude entender por los comentarios, nadie cree que una máquina pueda hacer tal cosa.importanteTAREA para nosotros.

Entonces, creo que la mejor solución para facilitar nuestro trabajo de indexación es crear comandos personales adecuados (en lo que no soy bueno hasta ahora...). Quiero hacer al menos lo siguiente:

  1. Tener una forma de imprimir la palabra indexada en el texto, es decir, para evitar escribir cosas dos veces.

    (some text) word \index{word} ...
    

    con la definición de comando \selfde la siguiente manera obtengo lo que quiero.

    \DeclareRobustCommand{\self}[1]{{#1}\index{#1}} %solves 1 
    
  2. Defina un comando para entradas dentro de una palabra indexada repetida varias veces. ej.: evite repetir "palabra"

    \index{word! entry1}, \index{word! entry1}, \index{word! entry1}...
    

El siguiente comando \sublo hace.

    \DeclareRobustCommand{\sub}[1]{\texttt{#1}\index{Set subordinate!#1}} %solves2
  1. Lo mismo que 2 pero ahora el comando debe usar una variable definida en partes del texto (para reemplazar la "palabra" fija en el anterior). ¿Es eso posible? ver intento en la sección "Especial" dentro del ejemplo siguiente

  2. ¿Comando para dividir \splexlas entradas del índice () ( nvariable) en múltiplos \index{}? Para evitar makeindeximprimir todas las entradas en la misma línea cuando uso, \index{Cramer, determinant, matrices}por ejemplo. No tengo idea de cómo empezar a escribir el comando, especialmente porque estoy asumiendo un caso general donde el número de entradas varía. Mi idea es utilizar \splex{Cramer, determinant, matrices}para producir \index{Cramer} \index{determinant} \index{matrices}en el texto..

Encontré algunos comandos similares en otros ejemplos en Internet y los estoy adaptando a mis intereses, pero todavía no puedo entender algunos. ¿Están bien los comandos del siguiente ejemplo o podrían mejorarse/reemplazarse? ¿Y cómo resolver los puntos 3 y 4?

\documentclass{article}
\usepackage{makeidx}
\makeindex
%\DeclareRobustCommand{\self}[1]{\texttt{#1}\index{#1}} %solves 1 but changes text style
\DeclareRobustCommand{\self}[1]{{#1}\index{#1}} %solves 1 
\DeclareRobustCommand{\sub}[1]{\texttt{#1}\index{Set subordinate!#1}} %solves2
\newcommand{\subdef}[2]{\index{\subd!#1}} %attempt to 3
\begin{document}
  Usefull \self{commands}.

   (some text) \sub{entry1}. 
   (some text)  \sub{entry2}. 

    \newpage
    \section{Especial *NOT WORKING*}
    \def\subd{especial}
     Something1  \subdef{entry1}. 
     Something2  \subdef{entry2}. 
\printindex
\end{document}

Apéndice

Si tiene un buen tutorial que indicar para aprender a crear comandos personales (desde comandos básicos hasta complejos), publique el enlace en los comentarios.

Respuesta1

No estoy del todo seguro de entender a qué se refiere el punto 3. Su comando especifica 2 argumentos pero solo usa uno en la definición y no tiene ningún código que coloque el argumento en el texto, lo cual pensé que era lo deseado en este caso. Sin embargo, según tengo entendido 3, creo que esto lo resuelve.

4 es más sencillo de entender en términos de tus deseos. Sin embargo, mi solución es un poco más compleja ya que se basa en etoolbox.

\documentclass{article}
\usepackage{makeidx,etoolbox}
\makeindex
\DeclareRobustCommand{\self}[1]{{#1}\index{#1}}% solves 1
\DeclareRobustCommand{\sub}[1]{\texttt{#1}\index{Set subordinate!#1}}% solves2
\DeclareRobustCommand{\subdef}[1]{\texttt{#1}\index{\subd!#1}}% solves 3? (not sure I've understood the aim of 3)
% etoolbox manual p. 24
\newcommand\splex[1]{% solves 4
  \forcsvlist{\listadd\mylist}{#1}%
  \forlistloop{\index}{\mylist}}
\begin{document}
  Useful \self{commands}.

  (some text) \sub{entry1}.
  (some text)  \sub{entry2}.

  \section{Especial *WORKING*}
  \def\subd{especial}
  Something1  \subdef{entry1}.
  Something2  \subdef{entry2}.

  \section{Another test}
  \def\subd{another test}
  Something 3  \subdef{entry3}.
  Something 4 \subdef{entry4}.

  \section{Split commands}
  Nothing much to say.\splex{Cramer, determinant, matrices}

  \printindex
\end{document}

texto y lista

información relacionada