如何创建一个允许您在“ : ”之前加粗单词的环境

如何创建一个允许您在“ : ”之前加粗单词的环境

(这是我的第一个问题,我希望我没有违反任何规则)
我需要一个环境,它基本上以“:”符号分隔的单词列表作为输入,并且只加粗“:”之前出现的内容

实例:

如果我在我的代码中写入

\begin{environment}

pizza: italian food made of (etc...)
dog: animal that is similar to a wolf and (etc...)
John: name of persone that (etc...)
plastic: type of material given by (etc...)

\end{environment}

我希望我的输出是:

比萨:由(等等......)制成的意大利食物
:类似于狼的动物和(等等......)
约翰: 人员姓名(等等……)
塑料:(等等……)给出的材料类型


一般来说,其他“:”也可以出现在单词描述中,因此要注意的一点是,这是不被允许的(基本上,它必须在第一个“:”之前以粗体显示)。

我最初使用 chatGPT 尝试创建这个环境,但尽管我对其进行了各种修正(它仍然生成了大量错误或不起作用的代码)

动机

我已经定义了单词列表(大约有 4000 个单词),我想避免在每个单词前面复制和粘贴“\mathbf{}”或任何其他命令(如“\item”或类似命令)。因此,如果这是一个只需要在列表开头和结尾添加代码的环境,我会非常高兴。

答案1

在此处输入图片描述

我可能会编辑源代码而不是这样做但是...

\documentclass{article}

\newenvironment{environment}
{\obeylines
\everypar{\boldify}%
}
{}
\def\boldify#1:{\textbf{#1: }}
\begin{document}

\begin{environment}

pizza: italian food made of pineapples (etc...)
dog: animal that is similar to a wolf and (etc...)
John: name of persone that (etc...)
plastic: type of material given by (etc...)

\end{environment}


aaa: oops

\end{document}

答案2

我们可以在 OpTeX 中做什么:

\def\begbf{\bgroup \everypar={\bftocolon}}
\def\endbf{\egroup}
\eoldef\bftocolon#1{\bftocolonA#1\par}
\def\bftocolonA#1:{{\bf#1:}}

\begbf

pizza: italian food made of pineapples (etc...)
dog: animal that is similar to a wolf and (etc...)
John: name of persone that (etc...)
plastic: type of material given by (etc...)

\endbf

\bye

答案3

只是为了多样性,我们来介绍一个基于 LuaLaTeX 的解决方案。它的工作原理是:(a) 创建一个 Lua 函数,该函数使用 Lua 的string.gsub函数将材料加粗,直到但不包括输入字符串中的第一个“:”字符;(b) 设置一个名为 的 LaTeX 环境boldify,其中 Lua 函数被分配给 LuaTeX 的process_input_buffer回调。在那里,Lua 函数充当输入流的预处理器,TeX 开始其常规处理。

在此处输入图片描述

% !TEX TS-program = lualatex
\documentclass{article}

\usepackage{luacode} % for 'luacode' env.
\begin{luacode}
   function boldify ( s )
      return ( s:gsub ( "^(.-):" , "\\textbf{%1}:" ) )
   end
\end{luacode}

\newenvironment{boldify}{%
   \obeylines
   \directlua{luatexbase.add_to_callback (
      "process_input_buffer", boldify, "boldify" )}}{%
   \directlua{luatexbase.remove_from_callback (
      "process_input_buffer", "boldify" )}}

\begin{document}

\begin{boldify}

pizza: Italian food made of \dots
dog: animal that is similar to a wolf and \dots
John: name of person that \dots
plastic: type of material given by \dots

\end{boldify}

aaa: 

bbb:

\end{document}

相关内容