abntex2 icon indicating copy to clipboard operation
abntex2 copied to clipboard

Lista de símbolos automática

Open GoogleCodeExporter opened this issue 9 years ago • 23 comments

Olá estive me perguntando por qual motivo não temos uma lista de simbolos 
automatica?

Por exemplo, onde o símbolo aparece pela primeira vez, coloca-se um comando 
\criarsimbolo{<simbolo>}{descrição}

e no local onde desejamos a lista, escrevemos \imprimirlistadesimbolos

fiz isso para mim, talvez seja legal melhorar e disponibilizar para todos:

\makeatletter
\newcommand\criarsimbolo[2]{%
  \write\@auxout{\noexpand\@writefile{sbl}{\noexpand\item[#1] #2}}}
\newcommand\imprimirlistadesimbolos{%
  \begin{simbolos}
   \@starttoc{sbl}
  \end{simbolos}}
\makeatother

problemas: quando compila pela primeira vez, dá um erro por não haver um 
\item no arquivo .sbl, na segunda vez que compila fica ok.

Neste caso teria que ver algo para melhorar... mas para mim está legal não 
ter mais que me preocupar com a ordem dos simbolos

Abraço

Original issue reported on code.google.com by [email protected] on 15 Jan 2014 at 4:09

  • Blocking: #115

GoogleCodeExporter avatar Mar 14 '15 11:03 GoogleCodeExporter

Original comment by laurocesar on 15 Jan 2014 at 4:39

  • Changed title: Lista de símbolos automática
  • Changed state: Proposed
  • Added labels: Priority-Medium, Milestone-Release2.0, Component-Logic, Usability

GoogleCodeExporter avatar Mar 14 '15 11:03 GoogleCodeExporter

Robinson,

Gostei da ideia e também gostei de ver como usar os arquivos externos. Porém, 
essa solução gera o inconveniente de termos que continuar sabendo onde um 
determinado símbolo aparece pela primeira vez, não é isso?

Eu não conheço a solução do makeindex, mas ela seria similiar a essa? Ou 
seja, ainda assim seria necessário um comando para informar o LaTeX quando um 
símbolo aparece pela primeira vez?

Original comment by laurocesar on 16 Jan 2014 at 9:11

GoogleCodeExporter avatar Mar 14 '15 11:03 GoogleCodeExporter

Não aprofundei muito com as outras soluções, principalmente pela dificuldade 
que encontrei com o makeindex (que estou quase conseguindo superar). 

Descobri que utilizando o pdflatex primeiro para compilar não gera os arquivos 
para o makeindex, então precisa compilar usando latex+makeindex+latex+pdflatex 
e eu vinha utilizando pdflatex+makeindex+pdflatex (e isso não funcionou).

O que tem na linha para lista de símbolos/lista de siglas são o pacote 
glossaries e similares (nomencl, glotex e glosstex). 

Pelo que notei o glossaries é o mais promissor, dá para fazer tanto a lista 
de símbolos (ordenar por ordem de uso no texto) quanto a lista de siglas 
(ordem alfabética), porém como não aprofundei muito, não sei se tem como 
criar uma lista em uma ordem e a outra em outra.

No caso do glossaries, temos que criar uma entrada para o símbolo/sigla

\newglossaryentry{<label>}{<settings>}
No settings coloca-se várias coisas como 
\newglossaryentry{oesophagus}{
name=\oe sophagus,
description={canal from mouth to stomach},
plural=\oe sophagi}

Para utilizar por exemplo no texto, coloca-se

\gls{<label>}

Mas neste caso precisa-se fazer customizações para adequar ao abntex.

Acho que isso seria o melhor para não ter que se preocupar com a 
inconveniência de ter que saber onde utilizou pela primeira vez.

Original comment by [email protected] on 16 Jan 2014 at 3:21

GoogleCodeExporter avatar Mar 14 '15 11:03 GoogleCodeExporter

Pois é. Veja que temos alguma coisa adiantada na issue 66. No abnTeX2 também 
distribuímos um modelo com glossário. Usar o pacote glossaries também me 
parece a melhor alternativa.

Original comment by laurocesar on 16 Jan 2014 at 3:58

GoogleCodeExporter avatar Mar 14 '15 11:03 GoogleCodeExporter

Original comment by laurocesar on 2 May 2014 at 6:06

  • Now blocking: #115

GoogleCodeExporter avatar Mar 14 '15 11:03 GoogleCodeExporter

Ver issue 115

Original comment by laurocesar on 2 May 2014 at 6:07

GoogleCodeExporter avatar Mar 14 '15 11:03 GoogleCodeExporter

Original comment by laurocesar on 3 May 2014 at 12:46

  • Changed state: Accepted

GoogleCodeExporter avatar Mar 14 '15 11:03 GoogleCodeExporter

Sugiro a utilização do pacote glossaries.
Além da lista de símbolos gera a lista de acrônimos.
Com opção de declaração de termos no plural.

http://www.ctan.org/pkg/glossaries

Eu tenho utilizado sem problemas no Miktex 2.9 em conjunto com o 
Eclipse+Texlipse.
Ao invés de chamar o pdftex, um arquivo de lotes do ms dos .bat é chamado que 
por sua vez chama o makeglossaries conforme pode ser visto em:

http://tex.stackexchange.com/questions/45416/using-glossaries-in-texlipse




Original comment by [email protected] on 9 Jun 2014 at 1:14

GoogleCodeExporter avatar Mar 14 '15 11:03 GoogleCodeExporter

Original comment by laurocesar on 9 Jun 2014 at 1:52

  • Now blocking: #66

GoogleCodeExporter avatar Mar 14 '15 11:03 GoogleCodeExporter

Obrigado Daniel. Mas apenas para registrar, o assunto do pacote glossaries é 
tratado na issue 66

Original comment by laurocesar on 9 Jun 2014 at 1:53

GoogleCodeExporter avatar Mar 14 '15 11:03 GoogleCodeExporter

Saudações,

Consegui fazer uma versão que trabalha com o glossaries. Em anexo estão a 
classe abntex2.cls e o modelo canônico com o exemplo.
Este é meu primeiro trabalho de colaboração com o latex e com projeto 
opensource. Logo, peço desculpas se o código não estiver elegante o 
suficiente.

Se esta solução atender à necessidade, gostaria de saber como devo proceder 
(posso fazer commit?)

Original comment by [email protected] on 20 Jul 2014 at 7:52

Attachments:

GoogleCodeExporter avatar Mar 14 '15 11:03 GoogleCodeExporter

Olá Jose Paulo

Conforme conversamos em mensagem particular, inicialmente peço desculpas pela 
demora nesta resposta.

Analisei sua proposta! Ficou excelente! Parabéns!

Algumas observações:

 -> Analisei as alterações que fez no arquivo abntex2.cls. Considerando que a única necessidade foi incluir um pacote, no caso, o glossaries, considerando este documento http://linorg.usp.br/CTAN/macros/latex/doc/clsguide.pdf, entendo que o mais adequado seja criar um pacote que inclua as customizações necessárias ao glossaries, algo a parte da classe abntex2. Isso se justifica pela mesma forma que se justifica a existência do pacote abntex2cite, que essencialmente são customizações do estilo de citações padrão do bibtex.
 ->  Então, anexo está uma proposta do pacote. Chameio-o de abntex2glossaries. Veja se concorda com a ideia
 -> Estando tudo certo, podemos incluí-lo na próxima distribuição do abnTeX2. 
 -> Nesse caso, podemos ajustar o modelo de glossário que já temos para usar o novo pacote, de modo a servir como exemplo tanto de glossário como de lista de siglas e símbolo

Você concorda? Poderia continuar esse desenvolvimento?

Abraços!

Original comment by laurocesar on 1 Sep 2014 at 11:38

GoogleCodeExporter avatar Mar 14 '15 11:03 GoogleCodeExporter

Segue anexo

Original comment by laurocesar on 1 Sep 2014 at 11:39

Attachments:

GoogleCodeExporter avatar Mar 14 '15 11:03 GoogleCodeExporter

Saudações, Lauro.

Obrigado! Estava preocupado se havia procedido da maneira correta.

Deixa comigo, vou continuar e montar a classe conforme sua sugestão.

Vamos nos falando.

Sucesso!

Original comment by [email protected] on 2 Sep 2014 at 12:41

GoogleCodeExporter avatar Mar 14 '15 11:03 GoogleCodeExporter

Olá José Paulo, 

eu coloquei no ar a customização para a UFPR. Como eu comentei que estou 
interessado em colaborar com a lista de símbolos e abreviaturas, o Lauro 
sugeriu que eu contribui-se contigo nesta issue.

Apenas para me posicionar com o trabalho por você desenvolvido, os anexos que 
estão disponibilizados em 01 de setembro seriam um ponto de partida para eu 
colaborar?

Att,
Emílio 

Original comment by [email protected] on 9 Dec 2014 at 12:18

GoogleCodeExporter avatar Mar 14 '15 11:03 GoogleCodeExporter

Saudações, Emilio.

Agradeço pela ajuda na colaboração. Os arquivos que alterei eu postei nesta 
thread em 20/07/2014.

No comentário de 01/09, o Lauro faz as sugestões para finalização da 
alteração.

Pelo que entendi, basta pegar as alterações que eu fiz direto no arquivo 
abntex2.cls e transferir para um novo arquivo chamado abntex2glossaries, que o 
Lauro disponibilizou em 01/09. 

Tem uma funcionalidade que não consegui resolver que é a questão da 
ordenação de siglas. Segundo a ABNT (pelo que pude verificar), a lista de 
siglas deve ser montada em função da ordem de aparição no texto. Hoje está 
por ordem alfabética.

Att.
José Paulo

Original comment by [email protected] on 9 Dec 2014 at 12:29

GoogleCodeExporter avatar Mar 14 '15 11:03 GoogleCodeExporter

Issue 66 has been merged into this issue.

Original comment by laurocesar on 6 Jan 2015 at 10:10

GoogleCodeExporter avatar Mar 14 '15 11:03 GoogleCodeExporter

Original comment by laurocesar on 6 Jan 2015 at 10:10

GoogleCodeExporter avatar Mar 14 '15 11:03 GoogleCodeExporter

Issue 115 has been merged into this issue.

Original comment by laurocesar on 15 Jan 2015 at 9:49

GoogleCodeExporter avatar Mar 14 '15 11:03 GoogleCodeExporter

Semelhante à solução que eu dei em #153

\makeatletter

\newcommand{\simbolo}[2]{\addcontentsline{lsb}{simb}{\numberline{#1}{#2}}}

\newcommand{\l@simb}[2]{
	\vskip -0.5cm
	\leftskip 0.0cm
	\parfillskip -\rightskip
	\parindent 0cm
	\@tempdima 2.5cm
	\advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip
	{\normalfont {#1}}\nobreak \filltocentry{#2}
}


\newcommand{\imprimirlistadesimbolos}
{
	\pretextualchapter{\listadesimbolosname}\@starttoc{lsb}
	\cleardoublepage
}


\makeatother

Aqui vai o comparativo do comando \simbolos

\begin{simbolos} \item[$ \Gamma $] Letra grega Gama \item[$ \Lambda $] Lambda \item[$ \zeta $] Letra grega minúscula zeta \item[$ \in $] Pertence \end{simbolos}

e a solução proposta

\simbolo{$ \Gamma $}{Letra grega Gama} \simbolo{$ \Lambda $}{Lambda} \simbolo{$ \zeta $}{Letra grega minúscula zeta} \simbolo{$ \in $}{Pertence}

issue104

@laurocesar, com essa solução não é preciso usar nenhum pacote fora do modelo canônico. Essa gambiarra tem a grande vantagem de ser usado dentro da parte textual, além de criar link. Quem sabe pode ser implementado numa futura atualização do abntex.

cauachagas avatar Dec 30 '17 04:12 cauachagas

Legal!

Vamos incorporá-la ao modelo e lançar uma atualização.

Só precisamos observar que a nova versão deve manter a compatibilidade de versões anteriores.

Entao, e provável que precisemos deixar os dois métodos

Um abraço !

Em sáb, 30 de dez de 2017 às 02:57, Cauã Chagas [email protected] escreveu:

Semelhante à solução que eu dei em #153 https://github.com/abntex/abntex2/issues/153

\makeatletter

\newcommand{\simbolo}[2]{\addcontentsline{lsb}{simb}{\numberline{#1}{#2}}}

\newcommand{\l@simb}[2]{ \vskip -0.5cm \leftskip 0.0cm \parfillskip -\rightskip \parindent 0cm @tempdima 2.5cm \advance\leftskip @tempdima \null\nobreak\hskip -\leftskip {\normalfont {#1}}\nobreak \filltocentry{#2} }

\newcommand{\imprimirlistadesimbolos} { \pretextualchapter{\listadesimbolosname}@starttoc{lsb} \cleardoublepage }

\makeatother

Aqui vai o comparativo do comando \simbolos

\begin{simbolos} \item[$ \Gamma $] Letra grega Gama \item[$ \Lambda $] Lambda \item[$ \zeta $] Letra grega minúscula zeta \item[$ \in $] Pertence \end{simbolos}

e a solução proposta

\simbolo{$ \Gamma $}{Letra grega Gama} \simbolo{$ \Lambda $}{Lambda} \simbolo{$ \zeta $}{Letra grega minúscula zeta} \simbolo{$ \in $}{Pertence}

[image: issue104] https://user-images.githubusercontent.com/26585248/34451378-95733d7e-ed0a-11e7-8a4b-79843d132ff7.png

@laurocesar https://github.com/laurocesar, com essa solução não é preciso usar nenhum pacote fora do modelo canônico. Essa gambiarra tem a grande vantagem de ser usado dentro da parte textual, além de criar link. Quem sabe pode ser implementado numa futura atualização do abntex.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/abntex/abntex2/issues/104#issuecomment-354527713, or mute the thread https://github.com/notifications/unsubscribe-auth/AASMBUQ6w8A8psJcPEUEoPdljdx96G8Fks5tFcK7gaJpZM4RPgz3 .


Esta mensagem pode conter informação confidencial ou privilegiada, sendo seu sigilo protegido por lei. Se você não for o destinatário ou a pessoa autorizada a receber esta mensagem, não pode usar, copiar ou divulgar as informações nela contidas ou tomar qualquer ação baseada nessas informações. Se você recebeu esta mensagem por engano, por favor, avise imediatamente ao remetente, respondendo o e-mail e em seguida apague-a. Agradecemos sua cooperação.

This message may contain confidential or privileged information and its confidentiality is protected by law. If you are not the addressed or authorized person to receive this message, you must not use, copy, disclose or take any action based on it or any information herein. If you have received this message by mistake, please advise the sender immediately by replying the e-mail and then deleting it. Thank you for your cooperation.

laurocesar avatar Dec 30 '17 08:12 laurocesar

Retornando... Agora com a solução usando glossaries, como sugerido nos comentários acima. Os códigos são auto-explicativos. Quem quiser se poupar de ver códigos, estou disponibilizando o arquivo .sty anbtex2-glossario-style e o modelo de uso de glossário abntex2-modelo-glossarios, modificado do repositório do abntex2

OBS: No exemplo em questão, usei o MakeIndex ao invés do TexIndy, por conta de, algum motivo que desconheço, ele só ter gerado uma entrada na lista de símbolos. A lista de siglas ficou O.K com o TexIndy.

De toda forma, aqui vai os códigos usados, exemplos de uso, aparência no texto e a listas.


\usepackage[%
%xindy={language=portuguese}, %para usar o xindy ao invés do makeindex
subentrycounter,
seeautonumberlist,
nonumberlist,
nogroupskip,
shortcuts,   % criação de atalhos
acronym,  % criação de acrônimos  	
translate=babel, % Faz o papel de \providetranslation
nopostdot  % Não é colocado ponto ao final da entrada
]{glossaries}


\renewcommand{\glossarypreamble}{\vspace{-0.2cm}}  % Retira o espaço proviniente do estilo


% Criação de estilo

\newglossarystyle{mylong1}{% modificado de https://tex.stackexchange.com/a/166209/151962
	\setglossarystyle{long}%
	\renewenvironment{theglossary}%
	{\begin{longtable}[l]{@{}p{\dimexpr 3.0cm-\tabcolsep}p{0.78\hsize}}}% <-- change the value here
		{\end{longtable}}%
}



% Só um pequeno récuo em relação ao primeiro
\newglossarystyle{mylong2}{% modificado de https://tex.stackexchange.com/a/166209/151962
	\setglossarystyle{long}%
	\renewenvironment{theglossary}%
	{\begin{longtable}[l]{@{}p{\dimexpr 2.0cm-\tabcolsep}p{0.86\hsize}}}% <-- change the value here
		{\end{longtable}}%
}



% Criando o comando sigla. Cria a descrição da sigla e a sigla entre parênteses 
% #1 é o atalho da sigla e a sigla. #2 é a descrição 
\newcommand{\sigla}[2]{\newacronym{#1}{#1}{#2}\acrfull{#1}}

% Só dá entrada na lista. Ainda não funciona com o limarka
\newcommand{\siglalista}[2]{\newacronym{#1}{#1}{#2}}  



\newglossary{simbolos}{simbolos}{sbl}{simbolos}

% Criando o comando simbolo. Imprime o símbolo e sua descrição só é mostrada na lista
% #1 é o atalho. #2 é símbolo. #3 descrição 
\newcommand{\simbolo}[3]{\newglossaryentry{#1}{%
						type=simbolos, 
						name=#2, 
						description=#3,
						sort=def}\gls{#1}}

% Só dá entrada na lista. Ainda não funciona com o limarka
\newcommand{\simbololista}[3]{\newglossaryentry{#1}{%
							type=simbolos, 
							name=#2, 
							description=#3,
							sort=def}}

% 
\newcommand{\imprimirlistadesiglas}{%
	    \pdfbookmark[0]{\listadesiglasname}{acn}	
		\printacronyms[%
				style=mylong1,
				title={\listadesiglasname \vspace{-0.2cm}}  % A lista de siglas ainda fica com um espaço a mais
			  ]
		\cleardoublepage
}

\newcommand{\imprimirlistadesimbolos}{%
   	\pdfbookmark[0]{\listadesimbolosname}{sbl}					
	\printglossary[%
			type=simbolos,
			title={\listadesimbolosname }, 
			style=mylong2
			]

	\cleardoublepage
}


\newcommand{\imprimirglossario}{
    \cleardoublepage
   	\pdfbookmark[0]{\glossaryname}{glo}					
	\printglossary[title={\glossaryname}]
}

Exemplo de uso


\sigla{ABNT}{Associação Brasileira de Normas Técnicas}, \sigla{abnTeX}{ABsurdas Normas para TeX}

De acordo com \acs{ABNT}...

\sigla{SUPRE-MISS}{Suicide Prevention Multisite Intervention Study on Suicidal Behaviors}

\sigla{SIRGAS2000}{Sistema de referência geocêntrico para as américas época 2000.4}

\sigla{UFOPA}{Universidade Federal do Oeste do Pará}

\simbolo{gama}{$ \Gamma $}{Letra grega Gama}, \simbolo{lambda}{$ \Lambda $}{Lambda}

\simbolo{zeta}{$ \zeta $}{Letra grega minúscula zeta}

\simbolo{pertence}{$ \in $}{Pertence}
 
\simbolo{pi}{$ \pi $}{Número pi}

A constante \gls{pi}... 

Aparência no texto

image

Listas

image

image

cauachagas avatar Jan 20 '18 07:01 cauachagas

Utilizar o pacote acronym é mais simples.

\documentclass{article}
\usepackage{acronym}
\usepackage{enumitem}
\usepackage[hidelinks]{hyperref}

\setlist{nosep}
\renewcommand*{\aclabelfont}[1]{\textsf{\acsfont{#1}}}
\renewenvironment{AC@deflist}[1]%
{\begin{description}[leftmargin=!, labelwidth=2.5cm, labelsep=0pt, itemindent=0pt, font=\normalfont]}%
        {\end{description}}

\begin{document}
\begin{acronym}[xxxxxxxxx]
    \acro{API}{Interface de Programação de Aplicativos, do inglês \textit{Application Programming Interface}}
    \acro{CPU}{Unidade Central de Processamento, do inglês \textit{Central Processing Unit}}
    \acro{DAG}{Grafos Acíclicos Dirigidos, do inglês \textit{Directed Acyclic Graph}}
    \acro{GC}{Coletor de Lixo, do inglês \textit{Garbage Collector}}
    \acro{VM}{Maquina Virtual, do inglês \textit{Virtual Machine}}
\end{acronym}
\null \par
\ac{API} -- \ac{API}. \\
\ac{CPU} -- \ac{CPU}. \\
\ac{DAG} -- \ac{DAG}. \\
\ac{GC} -- \ac{GC}. \\
\ac{VM} -- \ac{VM}. \\
\end{document}

lucasmsoares96 avatar Jul 31 '23 10:07 lucasmsoares96