diff --git a/test/sample-context.native b/test/sample-context.native
index 77aa293..30f7c06 100644
--- a/test/sample-context.native
+++ b/test/sample-context.native
@@ -32,7 +32,8 @@
         , Str "1866"
         ]
     , Str "."
-    , RawInline (Format "context") ""
+    , RawInline
+        (Format "context") "\\withfirstopt[note:my-evaluation]"
     , Note
         [ Para
             [ Str "It"
@@ -57,7 +58,7 @@
             , Str "."
             ]
         ]
-    , RawInline (Format "context") "[note:my-evaluation]"
+    , RawInline (Format "context") ""
     ]
 , Para
     [ Str ""
@@ -147,7 +148,7 @@
     , Str "some"
     , Space
     , Str "precisions."
-    , RawInline (Format "context") ""
+    , RawInline (Format "context") "\\withfirstopt[note:format]"
     , Note
         [ Para
             [ Str ""
@@ -208,7 +209,7 @@
                 ]
             ]
         ]
-    , RawInline (Format "context") "[note:format]"
+    , RawInline (Format "context") ""
     ]
 , Para
     [ Str ""
diff --git a/text-crossrefs.lua b/text-crossrefs.lua
index ac7201f..d9f631f 100644
--- a/text-crossrefs.lua
+++ b/text-crossrefs.lua
@@ -21,28 +21,13 @@ local RAW_ATTRIBUTE
   and redefine the macro so that it takes it into account.
 ]]--
 
-local function tweak_footnote_if_ConTeXt(metadata)
+local function support_footnote_label_ConTeXt(metadata)
   if RAW_ATTRIBUTE == 'context' then
-    local footnote_redefinition = [[
-\catcode`\@=11
-\let\origfootnote\footnote
-\def\footnote#1#2{
-  \def\tcrf@secondArg{#2}%
-  \def\tcrf@bracket{[}%
-  \ifx\tcrf@secondArg\tcrf@bracket
-    \def\tcrf@todo{\tcrf@footnote@withlabel{#1}#2} %
-  \else
-    \def\tcrf@todo{\origfootnote{#1}#2}%
-  \fi
-  \tcrf@todo
-}
-\def\tcrf@footnote@withlabel#1[#2]{\origfootnote[#2]{#1}}
-\catcode`\@=13
-    ]]
+    local label_macro_def = '\n\\def\\withfirstopt[#1]#2{#2[#1]}\n'
     if not metadata['header-includes'] then
       metadata['header-includes'] = pandoc.MetaBlocks(pandoc.RawBlock('context', ''))
     end
-    metadata['header-includes']:insert(pandoc.RawBlock('context', footnote_redefinition))
+    metadata['header-includes']:insert(pandoc.RawBlock('context', label_macro_def))
   end
   return metadata
 end
@@ -254,20 +239,20 @@ local collect_note_labels = {
 
 local function make_notelabel(pos)
   -- About the strategy followed with ConTeXt,
-  -- see above tweak_footnote_if_ConTeXt.
+  -- see above support_footnote_label_ConTeXt.
   local raw_code = ''
   if pos == 'begin' then
     if RAW_ATTRIBUTE == 'openxml' then
       raw_code = string.gsub(
         '',
         '{{label}}', current_note_labels[1])
+    elseif RAW_ATTRIBUTE == 'context' then
+      raw_code = '\\withfirstopt[note:' .. current_note_labels[1] .. ']'
     end
   elseif pos == 'end' then
     if RAW_ATTRIBUTE == 'openxml' then
       raw_code = string.gsub('',
                              '{{label}}', current_note_labels[1])
-    elseif RAW_ATTRIBUTE == 'context' then
-      raw_code = '[note:' .. current_note_labels[1] .. ']'
     end
   end
   return pandoc.RawInline(RAW_ATTRIBUTE, raw_code)
@@ -617,7 +602,7 @@ end
 
 return {
   { Meta = configure },
-  { Meta = tweak_footnote_if_ConTeXt },
+  { Meta = support_footnote_label_ConTeXt },
   { Note = set_notelabels },
   { Note = map_spans_to_notelabels },
   { Span = control_label_placement },