このウェブサイトのようなソフトウェア プログラム Slack には非常に優れた機能があります。次のようにバックティックを入力すると、任意のプログラマー ワードをその中に記述できます。次のように: someFunction()
。
これを LaTeX で実行するにはどうすればよいですか? 出力 PDF でも同様の効果を実現したいです。
質問に対する回答はすでに出ているはずですが、それを見つけるための適切な検索語が思いつきません。検索語探しはまさにその通りです。
答え1
これは LuaLaTeX ベースのソリューションです。_
やなどの TeX 特殊文字は&
、バックティック文字のペアの間に出現する場合があります。補遺OP によるフォローアップコメントを組み込む: 連続するバックティック文字を誤って解釈しないように注意する必要があります。これらは通常、TeX および LaTeX ドキュメントで引用された資料のインスタンスを開始するために使用します。
% !TEX TS-program = lualatex
\documentclass{article}
\usepackage{luacode}
\begin{luacode}
function backticks2tt ( s )
return ( s:gsub ( "`(..-)`" , "\\texttt{\\detokenize{%1}}" ) )
end
\end{luacode}
\AtBeginDocument{\directlua{luatexbase.add_to_callback(
"process_input_buffer", backticks2tt, "backticks2tt" )}}
\usepackage{url}
\begin{document}
aa `someFunction()` bb `some_other_Function()` cc
\end{document}
Lua関数によって実行されるパターンマッチングの種類についてのコメントbackticks2tt
が示されているようです。パターン
`(..-)`
パターンを指定する「非貪欲」な方法である「1文字以上Luaで「1文字以上の文字」の「貪欲な」パターンマッチを指定するには、次のように入力します。
`.+`
しかし、貪欲なパターンマッチは、文字列全体を取得することになるため、ここでは適切ではない。
someFunction()` bb `some_other_Function()
上記のMWEを次のように変更します
\texttt{\detokenize someFunction()` bb `some_other_Function()}
明らかに、それは正しくありません。そのため、非貪欲なパターン マッチングを指定することが必要になります。
答え2
Micoさんの回答に基づいて、私はもう少し真剣に取り組みました。何らかの理由で、まだいくつかの問題がありました。そこで、いくつかの記事を読んでLuaを学び、それをテストすることにしました。再投稿ウェブサイトを使用すると、すぐにテストして印刷することができます。
の上再投稿最終的なデザインに到達するまで、希望するものを繰り返し検討し、次のコードをテストしました。
function replaceBacktick(input)
local backtickPattern = "`(..-)`"
local quotePattern = "`(..-)'"
isQuoteMatch = input:find(quotePattern)
if isQuoteMatch == nil then
print("this is not a quote")
print( input:gsub(backtickPattern, "\\texttt{" .. input .. "}") )
else
print("this is a quote")
end
end
replaceBacktick( "``the number of correctly identified instances divided by the total number of instances \cite{leong2016} '') and 2.53\% (sensitivity which``")
replaceBacktick("`SomeReactComponent`")
私はミコの答えから作業を開始しました。なぜなら、私のテストから作業していたからです再投稿コードがエラーになり、冗長性も大幅に高まりました。それでも、if 文と関数の書き方を学んだので役に立ちました。以前は構文を知りませんでした。
私は、if 文で return 文をトリガーしなくても問題がなく、LaTeX のテキストはそのまま残るだろうと大いに思い込んでいました (どうやらそうなっているようです)。いくつかの記事を読んでも、LaTeX でデバッグ目的で印刷することは私には謎です。
とにかく、これが私にとってはうまく機能し、引用符、さらには単一引用符も無視する最終的なコードです。
\usepackage{luacode}
\begin{luacode}
function backticks2tt ( input )
local isQuoteMatch = input:find("`(..-)'")
if isQuoteMatch == nil then
return ( input:gsub ( "`(..-)`" , "\\inlinecode{\\detokenize{%1}}" ) )
end
end
\end{luacode}
\AtBeginDocument{\directlua{luatexbase.add_to_callback(
"process_input_buffer", backticks2tt, "backticks2tt" )}}