Permitir quebra de linha após barras em todos os casos, sem a necessidade de usar uma macro

Permitir quebra de linha após barras em todos os casos, sem a necessidade de usar uma macro

Estou digitando tabelas com longtable. Eu tenho uma p{2in}coluna. Eu tenho nomes de arquivos na coluna. Às vezes, esses nomes de arquivos são bastante longos. Eles têm barras neles. Mais ou menos assim /home/user/somebody/project1/file1/subfile1/this-is-the-filename.txt. Existe alguma maneira de dizer ao LaTeX que é permitido quebrar linha após uma barra?

Responder1

Supondo que você não tenha barras em outros contextos na sua coluna, você poderia fazer algo assim:

\makeatletter
{\catcode`\/=\active
  \gdef\slashbreak{
    \catcode`\/=\active
    \def/{\char`\/\penalty\z@}}
}
\makeatother
...
\begin{slashbreak}
\begin{longtable}
...
\end{longtable}
\end{slashbreak}

Isso criará /um personagem ativo dentro do ambiente slashbreak para que qualquer instância dele permita uma pausa posteriormente.

Por que é feito do jeito que é

Manipular códigos de caracteres pode ser complicado no TeX — o código de caracteres de um caractere será o código quando for digerido, o que não é necessariamente o que você poderia esperar. Se omitissemos os colchetes e a configuração do código de categoria de /, obteríamos uma sequência de controle ausente quando tentássemos redefinir, /uma vez que o código de categoria seria 12 em vez de 13. Esta é também a razão pela qual, por exemplo, \verbque faz alterações completas nos códigos de categoria, não funciona no argumento de outro comando: essas alterações acontecem tarde demais para que o modo literal funcione, uma vez que os códigos de categoria originais são estabelecidos quando o TeX finalmente expande a \verbmacro.

A expressão que empregamos aqui, de alterar o código da categoria dentro de um grupo e fazer \gdef(abreviação de \global\defpara que a definição seja acessível fora do grupo) é típica para esse tipo de manipulação de código de categoria. Se você vasculhar o código-fonte do LaTeX, verá muitas codificações semelhantes acontecendo.

informação relacionada