¿Cómo muestro las palabras clave de programación de manera diferente?

¿Cómo muestro las palabras clave de programación de manera diferente?

Slack el programa de software, como este sitio web, tiene una característica muy interesante. Cuando escribo comillas invertidas así: ``Puedo escribir cualquier palabra de programador en ellas. Como: someFunction().

¿Cómo hago esto en LaTeX? Quiero un efecto similar en el pdf de salida.

Estoy bastante seguro de que la pregunta ya está respondida, pero no se me ocurren los términos de búsqueda adecuados para encontrarla. La búsqueda del tesoro de términos de búsqueda es real.

Respuesta1

Aquí hay una solución basada en LuaLaTeX. Los caracteres especiales TeX, como _y &, pueden aparecer entre pares de caracteres de acento grave.Apéndicepara incorporar un comentario de seguimiento del OP: Se debe tener cuidado para no malinterpretar los caracteres de comilla invertida consecutivos, que generalmente se usan en documentos TeX y LaTeX para iniciar alguna instancia de material citado.

ingrese la descripción de la imagen aquí

% !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} 

backticks2ttParece indicado un comentario sobre el tipo de coincidencia de patrones que realiza la función Lua . El patrón

`(..-)`

es la forma "no codiciosa" de especificar el patrón "todas las instancias deuno o más personajesque están encerrados por caracteres de comilla invertida". Para especificar una coincidencia de patrón "codicioso" de "uno o más caracteres" en Lua, se escribiría

`.+`

Sin embargo, una coincidencia de patrón voraz no sería apropiada aquí, ya que terminaría agarrando toda la cadena.

someFunction()` bb `some_other_Function()

en el MWE que se muestra arriba y cambiándolo a

\texttt{\detokenize someFunction()` bb `some_other_Function()}

Claramente, eso no está bien y es por eso que es necesario especificar una coincidencia de patrones no codiciosa.

Respuesta2

Según la respuesta de Mico, me puse un poco más serio. Por alguna razón, todavía experimenté algunos problemas. Así que decidí aprender algo de Lua a través de algunos artículos y probarlo enRepl.it. El sitio web me permite probar e imprimir cosas rápidamente.

EnRepl.itRepetí lo que quería hasta que llegué a mi diseño final y probé el siguiente código:

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`")

Empecé a trabajar desde Mico su respuesta, porque trabajando desde mi probadoRepl.itEl código generó errores y también fue mucho más detallado. Aún así, me ayudó porque aprendí a escribir sentencias if y funciones, antes no conocía la sintaxis.

Supuse que no activar la declaración de devolución en la declaración if estaría bien y dejaría el texto en LaTeX tal como está (aparentemente lo está). Imprimir con fines de depuración en LaTeX, incluso después de leer algunos artículos, es un misterio para mí.

De todos modos, este es el código final que funciona para mí e ignora las comillas, ¡incluso las comillas simples!

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

información relacionada