diff --git a/scribble-lib/scribble/extract.rkt b/scribble-lib/scribble/extract.rkt
index 3ce60272..0bbb54bb 100644
--- a/scribble-lib/scribble/extract.rkt
+++ b/scribble-lib/scribble/extract.rkt
@@ -14,7 +14,7 @@
                                                    [e #'(e)])
                                               srcdoc)
                                       get-docs)
-                              (datum->syntax stx 'get-docs))]
+                              #'get-docs)]
                    [(wrap ...) wraps])
        #'(begin
            (define-syntax (docs stx)
diff --git a/scribble-lib/scribble/lp/lang/common.rkt b/scribble-lib/scribble/lp/lang/common.rkt
index d9fe24f6..c6cdf835 100644
--- a/scribble-lib/scribble/lp/lang/common.rkt
+++ b/scribble-lib/scribble/lp/lang/common.rkt
@@ -92,10 +92,16 @@
                     ;; The `doc` submodule allows a `scribble/lp` module
                     ;; to be provided to `scribble`:
                     #,@(if submod?
-                           #`((module doc scribble/doclang2
-                                (require scribble/manual
-                                         (only-in scribble/private/lp chunk CHUNK))
-                                #,(strip-context #'(begin body0 . body))))
+                           (list
+                            (let ([submod
+                                   (strip-context
+                                    #`(module doc scribble/doclang2
+                                        (require scribble/manual
+                                                 (only-in scribble/private/lp chunk CHUNK))
+                                        (begin body0 . body)))])
+                              (syntax-case submod ()
+                                [(_ . rest)
+                                 (datum->syntax submod (cons #'module #'rest))])))
                            '())))]))]))
 
 (define-syntax module-begin/plain (make-module-begin #f))
diff --git a/scribble-lib/scribble/srcdoc.rkt b/scribble-lib/scribble/srcdoc.rkt
index bcff3759..ee977a16 100644
--- a/scribble-lib/scribble/srcdoc.rkt
+++ b/scribble-lib/scribble/srcdoc.rkt
@@ -31,7 +31,10 @@
      (syntax-local-lift-module-end-declaration
       #`(begin-for-syntax (add-relative-requires! (#%variable-reference)
                                                   (quote-syntax #,specs)))))
-   (add-requires! (syntax-local-introduce specs)))
+   (with-syntax ([(spec ...) (syntax-local-introduce specs)])
+     ;; Using `combine-in` protects `spec` against
+     ;; matching `(op arg ...)` in `doc-submodule`:
+     (add-requires! #'((combine-in spec) ...))))
 
  (define (add-relative-requires! varref specs)
    (define mpi (variable-reference->module-path-index varref))