Comandos para ajudar na indexação

Comandos para ajudar na indexação

Quero ter formas mais fáceis de indexar textos grandes como teses, relatórios, livros. Encontrei muitos posts aqui pedindo alguma ferramenta mágica para fazer isso automaticamente. E, pelo que pude perceber pelos comentários, ninguém acredita que uma máquina possa fazer tal coisa.importanteTAREFA para nós.

Então, acho que a melhor solução para facilitar nosso trabalho de indexação é criar comandos pessoais adequados (nos quais não sou bom até agora...). Eu quero fazer pelo menos o seguinte:

  1. Tenha uma forma de imprimir a palavra indexada no texto, ou seja, para evitar digitar duas vezes

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

    com a definição de comando \selfda maneira abaixo consigo o que quero.

    \DeclareRobustCommand{\self}[1]{{#1}\index{#1}} %solves 1 
    
  2. Defina o comando para entradas dentro de uma palavra indexada repetida várias vezes. ex.: evite repetir "palavra"

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

O comando \subabaixo faz isso.

    \DeclareRobustCommand{\sub}[1]{\texttt{#1}\index{Set subordinate!#1}} %solves2
  1. O mesmo que 2, mas agora o comando deve usar uma variável definida em partes do texto (para substituir a "palavra" fixa no anterior). Isso é possível? veja tentativa na seção "Especial" dentro do exemplo abaixo

  2. Comando para dividir \splexentradas de índice () ( nvariável) em múltiplos \index{}? Para evitar makeindeximprimir todas as entradas na mesma linha quando uso \index{Cramer, determinant, matrices}por exemplo. Não tenho ideia de como começar a escrever o comando, principalmente porque estou assumindo um caso geral onde o número de entradas varia. Minha ideia é usar \splex{Cramer, determinant, matrices}para produzir \index{Cramer} \index{determinant} \index{matrices}no texto..

Encontrei alguns comandos semelhantes em outros exemplos na internet e estou ajustando de acordo com meu interesse, mas alguns ainda não consigo entender. Os comandos do exemplo abaixo estão ok ou poderiam ser melhorados/substituídos? E como resolver o ponto 3 e 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}

Termo aditivo

Se você tiver um bom tutorial para indicar para aprender a criar comandos pessoais (desde comandos básicos até complexos) poste o link nos comentários.

Responder1

Não tenho certeza se entendi aonde o ponto 3 está chegando. Seu comando especifica 2 argumentos, mas você usa apenas um na definição e não possui nenhum código que colocaria o argumento no texto, o que achei desejado neste caso. Porém, pelo que entendi 3, isso resolve, eu acho.

4 é mais simples de entender em termos de seus desejos. No entanto, minha solução é um pouco mais complexa, pois depende do 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 e lista

informação relacionada