Intelligente (kontextbezogene) Anführungszeichen für das gesamte Dokument deaktivieren?

Intelligente (kontextbezogene) Anführungszeichen für das gesamte Dokument deaktivieren?

Ist es möglich, zudeaktivierenintelligente (kontextbezogene) Anführungszeichen für ein ganzes Dokument? Wenn ja, wie?

Können insbesondere das einfache Anführungszeichen ', das doppelte Anführungszeichen " und das Backtick ` durch eine Option oder Methode so belassen werden, wie sie sind, um solche Ersetzungen direkt zu deaktivieren?

\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}

Das Paketupquotescheint auf die \ver­ba­timTypabschnitte beschränkt zu sein. Das Paketcsquotesverfügt über Befehle und Umgebungen für benutzerdefinierte „intelligente Anführungszeichen“… dennoch war es schwierig, einen Schalter zum vollständigen Deaktivieren der intelligenten Anführungszeichen zu finden.

Die Frage„Gibt es ein Upquote-ähnliches Paket für den Haupttext und nicht nur für den wörtlichen Text?“ist auf der Suche nach einemPaket plus Makrosund statt einerAusschalter.

Die systemischen Auswirkungen vonPakete hinzufügenVergleicheeinen Schalter umlegen (Option?)weisen wesentliche Unterschiede auf.

Auf der einen Seite,"Paket hinzufügen"ist einstromabwärtsAnsatz. Downstream-Dateien haben Cluster und Komplexität in den Dateien der Autoren hinzugefügt. Wie zum Beispiel, fügen Sie dieses Paket xfür das Makro hinzu y, fügen Sie dann jenes Paket hinzu z, überschreiben Sie es adann, definieren Sie es dann b, damit es bselbst überschrieben werden kann. Jedes hinzugefügte Paket, jede hinzugefügte Definition und jede Überschreibung erhöht wahrscheinlich auch die Rechenkomplexität der dynamischen Laufzeitausführung.

Andererseits,„einen Schalter umlegen“ist einstromaufwärtsAnsatz. Ich vermute, dass diese Anführungszeichen-Ersetzungen ihren Ursprung in den verschiedenen TeX/LaTeX-Engines haben. Hypothetisch oder idealerweise könnte ein intelligenter Anführungszeichen-Optionsschalter kompiliert und verknüpft werden, um ihn effizient an der Quelle auszuführen … mit etwas Pseudologik wie:

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

dann würden Benutzer konzeptionell eine Befehlszeilenoption verwenden:

pdflatex --no-smart-quotes document.tex

oder verwenden Sie in den LaTeX/TeX-Dateien einen direkten Schalter wie den folgenden:

\smartquotesdisable
\smartquotesenable % default for backward compatibility

Solche intelligenten Umschalter zum Aktivieren/Deaktivieren von Ersetzungen gibt es in Umgebungen zur Dokumenterstellung, beispielsweise in verschiedenen Markdown-Tools pandocund gängigen Textverarbeitungsprogrammen.

Können intelligente Zitatsubstitutionen einfachausgeschaltet?" …

Wenn ja, großartig.

Falls nein, wo kann man dann eine Funktionsanfrage für einen intelligenten Substitutionsschalter einreichen? Oder herausfinden, ob eine solche Funktion bereits auf der Roadmap steht? :-)

Antwort1

Ich habe einige Bedenken, den Catcode von asciigraveund zu ändern quotedbl, da diese Zeichen häufig verwendet werden, um Catcodes anderer Zeichen zu ändern. Aber vielleicht ist es in Ordnung.

Aktualisiert, um mit pdflatex, xelatex, und zu funktionieren 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}

Ausgabe

verwandte Informationen