ドキュメント全体のスマート(コンテキスト)引用を無効にしますか?

ドキュメント全体のスマート(コンテキスト)引用を無効にしますか?

可能ですか?無効にするドキュメント全体に対してスマートな(コンテキストに応じた)引用を行うにはどうすればよいでしょうか。できる場合、その方法は?

特に、一重引用符 '、二重引用符 "、およびバックティック ` を、何らかのオプションまたは方法によってそのままにして、そのような置換を直接無効にすることはできますか?

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

その包みupquoteタイプセクションに限定されているようです\ver­ba­tim。パッケージcsquotesユーザー定義可能な「スマート引用符」用のコマンドと環境があります…しかし、スマート引用符を完全に無効にするスイッチは、まだ見つけられていません。

質問「単なる逐語的テキストではなく、メインテキスト用の upquote のようなパッケージはありますか?」を探していますパッケージとマクロそして、オフスイッチ

体系的な影響パッケージを追加するスイッチ(オプション?)を切り替える本質的な違いがある。

一方では、「パッケージの追加」下流アプローチ。下流のファイルにより、作成者のファイルにクラスターと複雑さが追加されました。 のようなxマクロ にこのパッケージを追加しy、そのパッケージ を追加してz、 をオーバーライドし、 自体をオーバーライドできるようにa定義します。追加された各パッケージ、定義、オーバーライドによって、動的ランタイム実行に計算の複雑さも追加される可能性があります。bb

一方で、「スイッチを切り替える」上流のアプローチ。これらの引用符の置換は、さまざまな TeX/LaTeX エンジンに由来するものだと思います。仮説的または理想的には、スマートな引用符オプション スイッチをコンパイルしてリンクし、ソースで効率的に実行することができます...次のような疑似ロジックを使用します。

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

概念的には、ユーザーはコマンドライン オプションを使用します。

pdflatex --no-smart-quotes document.tex

または、LaTeX/TeX ファイルで次のような直接スイッチを使用します。

\smartquotesdisable
\smartquotesenable % default for backward compatibility

pandocこのようなスマートな置換の有効化/無効化の切り替えは、さまざまなマークダウン ツールや主流のワード プロセッサなどのドキュメント作成環境に存在します。

では、「スマートクォート置換はオフ??? …

もしそうなら、素晴らしいです。

そうでない場合、スマート置換トグルの機能リクエストはどこに送信すればよいですか? または、そのような機能がすでにロードマップに含まれているかどうかを確認してください。 :-)

答え1

asciigraveとの catcode を変更することには多少の抵抗があります。quotedblこれらの文字は他の文字の catcode を変更するためによく使用されるからです。でも、おそらく大丈夫でしょう。

pdflatex、、xelatexおよびで動作するように更新されました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}

出力

関連情報