我是 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}
[ 但我想做一些调整,因此需要了解它是如何工作的。
- 我想放大角色名字(
label
)和演讲之间的空间。 - 什么是
o
和m
\declareDocumentCommand
- 怎么
\IfNoValueTF
运作的?
感谢您的帮助。
答案1
对于第一点,只需在环境描述中加入一些内容即可。labelsep
对于其他两个问题,只需阅读文档:label
itemize
xparse
http://www.chiark.greenend.org.uk/doc/texlive-doc/latex/l3packages/xparse/xparse.pdf。
- 代表
o
可选参数,代表m
强制参数。您不需要输入正在说话的人的名字,但必须输入对话作为参数。尝试First guy
在第一个对话中删除或退出方括号并对花括号执行相同操作,然后分别查看输出和给出的错误。 - 只是
\IfNoValueTF
检查是否给出了可选参数,如果给出了某些参数,它会写入您输入的内容,如果没有,它会写入一些水平间距。
另外,我加载了xcolor
包以避免编译错误。例如,更改black
为red
,它将改变您的角色颜色。
\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
我会尽力帮忙!
- 要扩大角色姓名和他们所说内容之间的间距,您应该添加
,labelsep=12.5mm
itemize-section。您可以根据需要更改长度。 o
表示可选,m
代表强制。这意味着,环境的第一个参数([label]
)是可选的,而第二个参数,即中的输入\dia{Hi! I'm the input!}
不是。- 如果没有找到,则“执行
\IfNoValueTF
”您在其后面写的内容,[label]
例如当您使用\dia{Lemme say something}
而不是 时\dia[steve]{Lemme say something!}
。在这种情况下,它将创建一行。
如果您还有其他问题,请不要犹豫!