gpt4 book ai didi

regex - 使用 knitr 和 LaTeX 为已编入索引的术语插入粗体文本

转载 作者:行者123 更新时间:2023-12-01 04:54:30 27 4
gpt4 key购买 nike

我的 PDF 由 knitr 制作和 LaTeX使用 RStudio 有 200 多个索引术语。我意识到为时已晚,最好将这些索引术语加粗,以便我可以在 PDF 中找到它们。似乎有一种方法可以使这种粗体自动化。

下面的小文本向量给出了 .Rnw 脚本中文本的示例,除了“index”之前的反斜杠之前的附加转义码。对于多样性,第二个字符串中的索引词之前有一个空格,第三个字符串中有一个非索引示例。我的索引词都不超过五个字。

text <- c("blah blah \\index{words}words ramble on", "more blah more blah\\index{space words} space words ramble on",
"final blah\\textbf{bold words} ramble on")

library(stringr)

我努力使用正则表达式和 stringr 进行正面回顾包,发现 '\index{' 并拉出索引的单词失败。我希望下面的正则表达式语句会说,“如果您发现单词 'index' 后跟一个左大括号、五个或更少的单词和一个右大括号,请提取这些单词。”不
wd <- str_extract(string = text, pattern = "(?<=index{\\w{1:5}})\\w+{1:5}") 
Error in stri_match_first_regex(string, pattern, opts_regex = attr(pattern, :
Error in {min,max} interval. (U_REGEX_BAD_INTERVAL)

有人会告诉我如何提取大括号中的单词吗?明确地说,我的最终目标是用\txtbf{} 将紧跟在左大括号后面的单词(索引项)括起来。如果您在这一步上提供指导,那就更好了!

编辑
感谢 Wiktor Stribiżew 的评论,我希望所有索引词在文本中都使用粗体。因此,第一个将是“等等等等 ramble on”,下一个将是“more blah more blah space words ramble on”,等等。.Rnw文件将需要这样做,在第一个示例中,通过插入\textbf{words} -- 将单词放在大括号中。我不知道如何做到这一点。

最佳答案

考虑到您的最后评论:

I want to retain the index portion, but bold the word(s) that are indexed and come immediately after it. Thus, "blah blah \\index{words}\\textbf{words}"



我相信你需要:
(\\index\{(\w+(?:\s+\w+){0,4})\})

并替换为 \1\\textbf{\2} .见 regex demo .

说明 :
  • (\\index\{(\w+(?:\s+\w+){0,4})\}) - 第 1 组捕获所有模式,以便我们可以使用 \1 引用它
  • \\index\{ - 文字字符序列 \index{
  • (\w+(?:\s+\w+){0,4}) - 第 2 组(称为 \2)捕获:
  • \w+ - 一个或多个单词字符(替换为 \S+ 以匹配 1+ 任何非空白字符)
  • (?:\s+\w+){0,4} - 零到四个序列:
  • \s+ - 1+ 个空格
  • \w+ - 1+ 字字符(可以用 \S+ 替换)
  • \} - 文字 }

  • R demo :
    text <- c("blah blah \\index{words}words ramble on", "more blah more blah\\index{space words} space words ramble on","final blah\\textbf{bold words} ramble on")
    gsub("(\\\\index\\{(\\w+(?:\\s+\\w+){0,4})\\})","\\1\\\\textbf{\\2}", text)
    ## => [1] "blah blah \\index{words}\\textbf{words}words ramble on"
    ## [2] "more blah more blah\\index{space words}\\textbf{space words} space words ramble on"
    ## [3] "final blah\\textbf{bold words} ramble on"

    关于regex - 使用 knitr 和 LaTeX 为已编入索引的术语插入粗体文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38414346/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com