Desativar cotações inteligentes (contextuais) para todo o documento?

Desativar cotações inteligentes (contextuais) para todo o documento?

é possíveldesabilitarcitações inteligentes (contextuais) para um documento inteiro? Se sim, como?

Em particular, as aspas simples ', aspas duplas' e o backtick ` podem ser deixadas como estão por alguma opção ou método para desativar diretamente tais substituições?

\documentclass{article}
% minimal document which illustrates the issue.
\begin{document}

Can "double quotes", 'single quotes' and `backticks`
substitutions to any curly, smart, quote, contextual 
be switched off for the whole document?

\end{document}

O pacoteupquoteparece limitado às \ver­ba­timseções de tipo. O pacotecsquotespossui comandos e ambientes para 'aspas inteligentes' definidas pelo usuário… ainda assim, alguma mudança para desativar completamente as aspas inteligentes tem sido ilusória.

A questão"Existe um pacote semelhante a uma citação para o texto principal e não apenas para o texto literal?"está procurando por umpacote mais macrose em vez de uminterruptor de desligar.

O impacto sistémico daadicionar pacotesvs.alternar um interruptor (opção?)possuem diferenças intrínsecas.

Por um lado,"adicionando um pacote"é umRio abaixoabordagem. Os arquivos downstream adicionaram cluster e complexidade aos arquivos dos autores. Como, adicione este pacote xpara macro y, adicione esse pacote z, substitua ae defina bpara que bele próprio possa ser substituído. Cada pacote, definição e substituição adicionados provavelmente também adiciona alguma complexidade computacional à execução dinâmica do tempo de execução.

Por outro lado,"alternar um interruptor"é umrio acimaabordagem. Suponho que essas substituições de cotações se originam em vários mecanismos TeX/LaTeX. Hipoteticamente ou idealmente, uma opção de cotação inteligente poderia ser compilada e vinculada para execução eficiente na fonte… com alguma pseudo lógica como:

// over simplified pseudo code
if smartQuotesOption == true {
  // make quote substitutions happen
}
else {
  // just skip the substitutions.
  // so, maybe nothing or little to do.
}

então, conceitualmente, os usuários usariam uma opção de linha de comando:

pdflatex --no-smart-quotes document.tex

ou use alguma opção direta como a seguinte nos arquivos LaTeX/TeX:

\smartquotesdisable
\smartquotesenable % default for backward compatibility

Essas opções de ativação/desativação de substituição inteligente existem em ambientes de criação de documentos, como várias ferramentas de remarcação pandoce processadores de texto convencionais.

Então, "As substituições de aspas inteligentes podem ser apenasdesativado?"…

Se sim, ótimo.

Se não, onde alguém enviaria uma solicitação de recurso para uma alternância de substituição inteligente? Ou descubra se esse recurso já está no roteiro? :-)

Responder1

Tenho algumas reservas sobre a alteração do código de gato do asciigravee do, quotedblpois esses caracteres são frequentemente usados ​​para alterar códigos de gato de outros caracteres. Mas talvez esteja tudo bem.

Atualizado para funcionar com pdflatex, xelatexe lualatex.

\documentclass{article}

\usepackage{ifxetex}
\usepackage{ifluatex}
\newif\ifxetexorluatex
\ifxetex
  \xetexorluatextrue
\else
  \ifluatex
    \xetexorluatextrue
  \else
    \xetexorluatexfalse
  \fi
\fi

\ifxetexorluatex
  \usepackage{fontspec}
  \begingroup
    \catcode 34=13
    \catcode 39=13
    \catcode 96=13
    \gdef"{\textquotedbl}
    \gdef'{\textquotesingle}
    \gdef`{\textasciigrave}
  \endgroup
\else
  \usepackage[TS1,T1]{fontenc}
  \begingroup
    \catcode 39=13
    \catcode 96=13
    \gdef'{{\fontencoding{TS1}\selectfont\textquotesingle}}
    \gdef`{{\fontencoding{TS1}\selectfont\textasciigrave}}
  \endgroup
\fi

\def\smartquotedisable{%
  \ifxetexorluatex
    \catcode 34=13
  \fi
  \catcode 39=13
  \catcode 96=13
}
\def\smartquoteenable{%
  \ifxetexorluatex
    \catcode 34=12
  \fi
  \catcode 39=12
  \catcode 96=12
}

\begin{document}

`Hello'

"Hello"

``Hello''

\smartquotedisable

`Hello'

"Hello"

``Hello''

\smartquoteenable

`Hello'

"Hello"

``Hello''

\end{document}

saída

informação relacionada