可能ですか?無効にするドキュメント全体に対してスマートな(コンテキストに応じた)引用を行うにはどうすればよいでしょうか。できる場合、その方法は?
特に、一重引用符 '、二重引用符 "、およびバックティック ` を、何らかのオプションまたは方法によってそのままにして、そのような置換を直接無効にすることはできますか?
\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
タイプセクションに限定されているようです\verbatim
。パッケージcsquotes
ユーザー定義可能な「スマート引用符」用のコマンドと環境があります…しかし、スマート引用符を完全に無効にするスイッチは、まだ見つけられていません。
質問「単なる逐語的テキストではなく、メインテキスト用の upquote のようなパッケージはありますか?」を探していますパッケージとマクロそして、オフスイッチ。
体系的な影響パッケージを追加する対スイッチ(オプション?)を切り替える本質的な違いがある。
一方では、「パッケージの追加」は下流アプローチ。下流のファイルにより、作成者のファイルにクラスターと複雑さが追加されました。 のようなx
マクロ にこのパッケージを追加しy
、そのパッケージ を追加してz
、 をオーバーライドし、 自体をオーバーライドできるようにa
定義します。追加された各パッケージ、定義、オーバーライドによって、動的ランタイム実行に計算の複雑さも追加される可能性があります。b
b
一方で、「スイッチを切り替える」は上流のアプローチ。これらの引用符の置換は、さまざまな 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}