@vdw, Thanks for the clarification about the blog  and your comprehensive explanation! I visited the code that you shared, and it helped me a lot.
Ahaaaa got it! Now it is crystal clear to me.
There is no point in having Conv2d because, in the text, the kernel needs to move word by word while we keep the embedding dimension as a constant.  And, by using Con2d, we consider a spare dimension throughout the convolution.
Thanks, @vdw again!