创建对话

创建对话

我是 Latex 的初学者。这是我的问题。

我想输入三个角色之间的对话。我找到了环境dialogue,但它并不完全符合我的期望。以下解决方案几乎做我想做的事:

    % arara: pdflatex

\documentclass{article}
\usepackage{blindtext}
\usepackage{enumitem}
\usepackage{xparse}
\DeclareDocumentCommand \dia { o m } {%
    \begin{itemize}[%
        ,label=\IfNoValueTF {#1} {}{#1:}
        ,nosep % optional
        ,font=\color{red}
        ]
        \item #2
    \end{itemize}%  
    }

\begin{document}
\dia[First guy]{Hi, how are you?}
\dia[Second guy]{Fine and you?}
\dia[Guy with long hair]{My god, this dialogue is so boring.}
\dia[first guy]{Indeed, but have you heard that \blindtext}
\end{document}

[结果[1] 但我想做一些调整,因此需要了解它是如何工作的。

  1. 我想放大角色名字(label)和演讲之间的空间。
  2. 什么是om\declareDocumentCommand
  3. 怎么\IfNoValueTF运作的?

感谢您的帮助。

答案1

对于第一点,只需在环境描述中加入一些内容即可。labelsep对于其他两个问题,只需阅读文档:labelitemizexparsehttp://www.chiark.greenend.org.uk/doc/texlive-doc/latex/l3packages/xparse/xparse.pdf

  1. 代表o可选参数,代表m强制参数。您不需要输入正在说话的人的名字,但必须输入对话作为参数。尝试First guy在第一个对话中删除或退出方括号并对花括号执行相同操作,然后分别查看输出和给出的错误。
  2. 只是\IfNoValueTF检查是否给出了可选参数,如果给出了某些参数,它会写入您输入的内容,如果没有,它会写入一些水平间距。

另外,我加载了xcolor包以避免编译错误。例如,更改blackred,它将改变您的角色颜色。

\documentclass{article}
\usepackage{blindtext}
\usepackage{enumitem}
\usepackage{xcolor}
\usepackage{xparse}
\DeclareDocumentCommand\dia{ o m }{%
    \begin{itemize}[%
        ,label=\IfNoValueTF {#1} {}{#1:}
        ,labelsep=8mm
        ,nosep % optional
        ,font=\color{black}
        ]
        \item #2
    \end{itemize}%  
    }

\begin{document}
\dia[First guy]{Hi, how are you?}
\dia[Second guy]{Fine and you?}
\dia[Guy with long hair]{My god, this dialogue is so boring.\\ %start a new line
Yeah! It's so boring.}
\dia[First guy]{Indeed, but have you heard that \blindtext}
\end{document}

例子

希望它能如您所愿发挥作用!

答案2

我会尽力帮忙!

  1. 要扩大角色姓名和他们所说内容之间的间距,您应该添加,labelsep=12.5mmitemize-section。您可以根据需要更改长度。
  2. o表示可选,m代表强制。这意味着,环境的第一个参数([label])是可选的,而第二个参数,即中的输入\dia{Hi! I'm the input!}不是。
  3. 如果没有找到,则“执行\IfNoValueTF”您在其后面写的内容,[label]例如当您使用\dia{Lemme say something}而不是 时\dia[steve]{Lemme say something!}。在这种情况下,它将创建一行。

如果您还有其他问题,请不要犹豫!

相关内容