从 \newcommand 到 \NewDocumentCommand

从 \newcommand 到 \NewDocumentCommand

早上好。在我的剧本中,我创建了一个\新命令对于每个字符。我想通过使用一个命令解决所有问题来简化\新文档命令,但是文档确实很难。这可能吗?非常感谢!

\documentclass[a4paper,12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{titlesec}
\usepackage{lipsum}

% Fonts
\usepackage{nimbusmononarrow}
\renewcommand*\familydefault{\ttdefault}

% def characters
\newcommand\JAMES{\par\vspace{5mm}\noindent\makebox[35mm][l]{JAMES}\hangindent=35mm}
\newcommand\CLARE{\par\vspace{5mm}\noindent\makebox[35mm][l]{CLARE}\hangindent=35mm}
\newcommand\BILL{\par\vspace{5mm}\noindent\makebox[35mm][l]{BILL}\hangindent=35mm}
\newcommand\ESTER{\par\vspace{5mm}\noindent\makebox[35mm][l]{ESTER}\hangindent=35mm}

\begin{document}

\JAMES
\lipsum*[1][1-3]

\CLARE
\lipsum*[1][1-4]

\BILL
\lipsum*[1][1-5]

\ESTER
\lipsum*[1][1-2]

\end{document}

答案1

如果你愿意简化它,你可以为每四个人定义一个通用的宏,因为每个人都有相同格式的命令。

% def characters
\def\declname#1#2{%
   \def#1{\vskip5mm \noindent\hbox to35mm{#2\hss}\hangindent=35mm \ignorespaces}}
\declname \JAMES {JAMES}
\declname \CLARE {CLARE}
\declname \BILL  {BILL}
\declname \ESTER {ESTER}

答案2

建议:为了节省两次输入名称的时间,您可以执行以下操作:

% def characters
\newcommand\declname[1]{%
   \expandafter\newcommand\csname #1\endcsname{\par\vspace{5mm}\noindent\makebox[35mm][l]{#1}\hangindent=35mm}}

\declname {JAMES}
\declname {CLARE}
\declname {BILL}
\declname {ESTER}

名称

平均能量损失

\documentclass[a4paper,12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{titlesec}
\usepackage{lipsum}

% Fonts
\usepackage{nimbusmononarrow}
\renewcommand*\familydefault{\ttdefault}

% def characters
\newcommand\declname[1]{%
   \expandafter\newcommand\csname #1\endcsname{\par\vspace{5mm}\noindent\makebox[35mm][l]{#1}\hangindent=35mm}}

\declname {JAMES}
\declname {CLARE}
\declname {BILL}
\declname {ESTER}
\begin{document}

\JAMES
\lipsum*[1][1-3]

\CLARE
\lipsum*[1][1-4]

\BILL
\lipsum*[1][1-5]

\ESTER
\lipsum*[1][1-2]

\end{document}

相关内容