0

我想在 Microsoft OneNote 2013 中使用宏或脚本突出显示我选择的编程语言(专有)的语法。我为 MS OneNote '13 找到了一个免费的宏创建器,它允许创建名为“ OneTastic ”的自定义宏。我创建了一个宏,它给出了两个数组,其中包含与不同颜色相关联的预定义单词列表以给出每个列表(例如:列表 1 单词 = 蓝色,列表 2 单词 = 橙色等)

API: https ://www.omeratay.com/onetastic/docs/

问题:搜索逻辑是在更大的单词中查找单词,例如单词“doma in ”(doma IN)中的“IN”。我的代码如下:

<?xml version="1.0" encoding="utf-16"?>
<Macro name="CCL TEST 3" category="Color" description="" version="10">
  <ModifyVar name="KEYWORDS1" op="set">
    <Function name="String_Split">
      <Param name="string" value="drop create program go %i declare call set end END execute else elseif protect constant curqual of subroutine to noconstant record free range in is protect define macro endmacro" />
      <Param name="delimiter" value=" " />
    </Function>
  </ModifyVar>
  <ModifyVar name="counter" op="set" value="0" />
  <WhileVar name="counter" op="lt">
    <Function name="Array_Length">
      <Param name="array" var="KEYWORDS1" />
    </Function>
    <IsRootOp />
    <ModifyVar name="keyword" op="set" var="KEYWORDS1">
      <RightIndex var="counter" />
    </ModifyVar>
    <For each="Text">
      <That hasProp="value" op="eq" var="keyword" />
      <ModifyProp name="fontColor" op="set" value="blue" />
    </For>
    <ModifyVar name="counter" op="add" value="1" />
  </WhileVar>
  <ModifyVar name="KEYWORDS2" op="set">
    <Function name="String_Split">
      <Param name="string" value="datetimefind datetimediff cnvtdatetime cnvtalias format build concat findfile error alterlist alter initrec cnvtdate esmError echo max min avg sum count uar_get_code_meaning mod substring size trim hour day isnumeric expand locateval cnvtstring fillstring btestfindstring logical uar_get_code_display uar_get_meaning_by_codeset UAR_GET_CODE_BY sqltype cnvtreal echorecord cnvtupper cnvtlower cnvtdatetimeutc abs datetimediff year julian btest decode evaluate findstring asis replace validate nullterm parser value uar_timer_create uar_CreatePropList uar_SetPropString uar_CloseHandle uar_Timer_Destroy uar_Timer_Stop build2 patstring piece cnvtalphanum timestampdiff" />
      <Param name="delimiter" value=" " />
    </Function>
  </ModifyVar>
  <ModifyVar name="counter2" op="set" value="0" />
  <WhileVar name="counter2" op="lt">
    <Function name="Array_Length">
      <Param name="array" var="KEYWORDS2" />
    </Function>
    <IsRootOp />
    <ModifyVar name="keyword" op="set" var="KEYWORDS2">
      <RightIndex var="counter2" />
    </ModifyVar>
    <For each="Text">
      <That hasProp="value" op="eq" var="keyword" />
      <ModifyProp name="fontColor" op="set" value="orange" />
    </For>
    <ModifyVar name="counter2" op="add" value="1" />
  </WhileVar>
</Macro>

OneTastic 语法荧光笔脚本

4

2 回答 2

0

虽然这不使用 VBA,但我使用并喜欢插件NoteHightlight2016

如果您没有找到一种语言,您可以浏览并添加您自己的语言。我已将 Excel 公式关键字添加到支持的语言中,我相信它比在我也使用和喜欢的 OneTastic 中创建要容易一些。

于 2019-12-03T16:29:32.967 回答
0

OneNote 中没有这样的内置功能,但您可以做到。

使用 Visual Studio Code,它是免费的。打开正确的文本复制/粘贴。在 VS 代码中编写代码。复制它。它将完全按照您所看到的那样粘贴。颜色和所有。

于 2019-04-15T10:52:50.180 回答