Isso é o que estou fazendo:
\documentclass{article}
\usepackage{fancyvrb}
\begin{document}
\begin{Verbatim}[commandchars=+\{\}]
Hello, \emph{world}!
Bye, +emph{world}!
\end{Verbatim}
\end{document}
A primeira linha é renderizada como Hello, \emphworld!
, o que não está correto. Por alguma razão, o Verbatim
ambiente trata {
e }
como caracteres especiais, não como texto literal simples. Sem o commandchars
, a primeira linha é renderizada corretamente.
Responder1
Com commandchars=+\{\}
, dentro do ambienteVerbatim
- o caractere
+
possui código de categoria 0 (escape) e, portanto, durante a tokenização é tratado da mesma forma que em circunstâncias normais/fora do ambienteVerbatim
a barra invertida\
é tratada. - o personagem
{
possui código de categoria 1 (grupo inicial) e, portanto, durante a tokenização é tratado da mesma forma que é tratado em circunstâncias normais/fora do ambienteVerbatim
. - o personagem
}
possui código de categoria 2 (grupo final) e, portanto, durante a tokenização é tratado da mesma forma que é tratado em circunstâncias normais/fora do ambienteVerbatim
.
Qualquer outro caractere que geralmente tenha uma função especial no TeX, por exemplo, o caractere de barra invertida, é tokenizado sob o regime de código de categoria literal onde esses caracteres especiais são atribuídos
- ou código de categoria 12 (outro) para que eles não tenham mais função especial, mas durante a composição são considerados diretivas para composição de algum glifo de uma fonte
- ou código de categoria 13 (ativo) para que possam ser definidos para expandir para alguns comandos que, por sua vez, produzem a composição de alguns símbolos, como
␣
para o caractere de espaço, ou produzem uma quebra de linha para o caractere de retorno de carro.
Tokenizar caracteres {
da categoria 1 sem criar um token de símbolo de controle produz tokens de caracteres explícitos da categoria 1 (grupo inicial).
Tokenizar caracteres }
da categoria 2 sem criar um token de símbolo de controle produz tokens de caracteres explícitos da categoria 2 (grupo final).
Ao contrário dos tokens de caracteres explícitos da categoria 11 (letra) e 12 (outros), esses tokens de caracteres explícitos durante a composição não são diretivas para a composição de algum glifo de uma fonte, mas são diretivas que afetam o agrupamento - seja delimitando escopos ou delimitando conjuntos de tokens que devem ser formar argumentos.
Dentro do seu Verbatim
ambiente, onde commandchars=+\{\}
está em vigor, a linha
Hello, \emph{world}!
é tokenizada como .
H11e11l11l11o11,13space13\12e11m11p11h11{1w11o11r11l11d11}2!12carriage return13
\12surge porque \
o código de categoria 12 (outro) não faz com que o LaTeX comece a criar um token de sequência de controle.
{1e afetam o escopo, mas não produzem nada. visível no arquivo .pdf.}2
Dentro do seu Verbatim
ambiente, onde commandchars=+\{\}
está em vigor, a linha
Bye, +emph{world}!
é tokenizada como .
B11y11e11,13space13\emph{1w11o11r11l11d11}2!12carriage return13
Com commandchars=+\{\}
efeito, você pode fazer +string+{
/ +string+}
para compor chaves. (Você também pode fazer +string{
/ +string}
contanto que {
e }
estejam equilibrados.)
Responder2
Aqui está um trecho da página 16 do guia do usuário dofantasiavrbpacote:
Já que você especificou
\begin{Verbatim}[commandchars=+\{\}]
o +
personagem age como \
faria em um ambiente normal, enquanto {
atua }
como abridores e fechadores de um grupo TeX. Conseqüentemente, +emph{world}
renderiza “mundo” em itálico dentro do Verbatim
ambiente.
Em contraste, \emph{world}
dentro do Verbatim
ambiente gera \emphworld
, com todos os glifos renderizados na fonte vertical monoespaçada. Afinal, como você especificou {
e }
atua como abridor e fechador de um grupo TeX, eles têm um significado especial e nãonãoser impresso.