I don't know if I'm missing something obvious in the question...
If your source file defines macro P as stated, why not:
.de P
\\$1 \\$2 \\$3
..
then in the text file:
.P "a b c" "d e" "f g h i"
Whitespace is inserted by the macro between \\$1, \\$2, and \\$3.
This is similar to how it's done by .I, .B, .BI, .BR, etc. macros
in the man macros I used back in the 1990s.
Clarke
Richard Ray wrote:
I want to pass multiple arguments to a macro and each argument may be
composed of multiple words/characters
I figured out this works but is there a way without defining individual
strings
.nf
.de P
\\*[\\$1]
\\*[\\$2]
\\*[\\$3]
..
.
.ds x a b c
.ds y d e
.ds z f g h i
.P x y z
Richard