
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:
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
\self
da maneira abaixo consigo o que quero.\DeclareRobustCommand{\self}[1]{{#1}\index{#1}} %solves 1
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 \sub
abaixo faz isso.
\DeclareRobustCommand{\sub}[1]{\texttt{#1}\index{Set subordinate!#1}} %solves2
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
Comando para dividir
\splex
entradas de índice () (n
variável) em múltiplos\index{}
? Para evitarmakeindex
imprimir 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}