Gostaria de mostrar algumas linhas de um arquivo CSV usando o pacote de listagens com breaklines=true
.
\documentclass{article}
\usepackage{listings}
\usepackage{xcolor}
\lstset{%
backgroundcolor=\color{lightgray},
basicstyle=\ttfamily\footnotesize,
breaklines,
showspaces
}
\begin{document}
\begin{lstlisting}
K01980;23S ribosomal RNA;11.79648646;17.54756407;16.55812848;7.070375553;9.904088434;10.33047681;11.34235283;12.84408234
K01977;16S ribosomal RNA;7.433653271;11.21805284;10.47502621;4.555449801;6.223779066;6.547853101;7.12047883;8.056722
K03046;DNA-directed RNA polymerase subunit beta' [EC:2.7.7.6];1.279373326;1.843958244;1.291530419;0.91598316;1.444456949;1.370082994;1.471863596;1.274232464
\end{lstlisting}
\end{document}
O resultado não é muito satisfatório, no entanto.
- A quebra ocorre muito cedo, então há muito espaço vazio no final da primeira linha e a segunda linha excede a largura do texto disponível. Não há quebra de linha na segunda linha.
- Há uma linha em branco após cada linha.
Eu gostaria de ter algo assim:
K01980;23S ribosomal RNA;11.79648646;17.54756407;16.55812848;
7.070375553;9.904088434;10.33047681;11.34235283;12.84408234
K01977;16S ribosomal RNA;7.433653271;11.21805284;10.47502621;
4.555449801;6.223779066;6.547853101;7.12047883;8.056722
K03046;DNA-directed RNA polymerase subunit beta' [EC:2.7.7.6];
1.279373326;1.843958244;1.291530419;0.91598316;1.444456949;
1.370082994;1.471863596;1.274232464
Responder1
listings
não quebra pedaços de caracteres quando eles pertencem à mesma categoria interna. Neste caso, ocarta,dígitoeoutrocategorias são de interesse especial. Por padrão, os caracteres são atribuídos a categorias como seria de esperar, ou seja, as letras são da categoriacarta, os dígitos sãodígito, e os símbolos sãooutro.
Quando umcartaé encontrado, todos seguindocartaoudígitocaracteres são lidos até que um não-carta/não-dígitoseja encontrado. Esta série é então gerada como um pedaço. O mesmo acontece agora com todos os personagens que não sãocartaaté a próximacartaseja encontrado. Processar a entrada dessa maneira evita que a longa série de dígitos, pontos e ponto-e-vírgula do seu exemplo seja quebrada, porque nãocartaé encontrado para iniciar um novo pedaço.
Aqui estão propostas sobre como resolver este problema:
Reorganize as categorias de caracteres de forma que os pedaços construídos correspondam às unidades de dados lógicos do seu caso de uso específico. Por exemplo, você pode querer mover os dígitos e o período também para a categoriacarta, deixando o ponto e vírgula como categoriaoutro. Isto pode ser feito adicionando
alsoletter={0123456789.}
para
\lstset
. As quebras de linha agora também podem ocorrer após todos os números decimais e após o ponto e vírgula.Mais simples é usar a
literate
opção e redefinir o ponto e vírgula para uma versão que permita uma quebra de linha após o símbolo:literate={;}{{;\allowbreak}}1
Ambas as soluções agora fornecem o resultado mais atraente