带有长谓词和连词列表的图 (\wedge)

带有长谓词和连词列表的图 (\wedge)

我有一个带有与 \wedge 相关的一长串谓词的图,这里是代码:

\begin{figure}[h]               
    \small{     
    $
    Defined\_in(subject\_state, concrete\_subject) \wedge Defined\_in (observer\_state, concrete\_observer) \wedge
    Defined\_in(attach, subject) \wedge Defined\_in(detach, subject) \wedge Defined\_in(notify, subject) \wedge ... it continues ...
    $
    }
    \caption{Caption text}
    \label{fig:myfig}
\end{figure}

问题是 pdflatex 生成的输出相当丑陋:

丑陋的输出

我希望将其全部左对齐,这样看起来会更好。如果我使用\[\]而不是$,LaTeX 会将所有内容放在与页面重叠的一行上。我想避免使用 手动插入新行\\,而是让 LaTeX 将其分成几行并左对齐。

答案1

% In the preamble
\usepackage{amsmath}
\newcommand{\func}{\textit}
\newcommand{\var}{\textit}

% In the document
\begin{figure}
\small
\begin{align*}
&\func{Defined\_in}(\var{subject\_state}, \var{concrete\_subject}) \wedge {}\\
&\func{Defined\_in}(\var{observer\_state}, \var{concrete\_observer}) \wedge {}\\
&\func{Defined\_in}(\var{attach}, \var{subject}) \wedge {}\\
&\func{Defined\_in}(\var{detach}, \var{subject}) \wedge {}\\
&\func{Defined\_in}(\var{notify}, \var{subject}) \wedge {}\\
...
\end{align*}
\caption{Caption text}
\label{fig:myfig}
\end{figure}

您马上就会发现,在数学模式下使用\textit{Defined\_in}比简单地使用 更好Defined\_in。我建议将函数与变量区分开来,这样您只需修改\func或的定义即可更改它们的格式\var

{}\\&如果您想合并两行,只需擦除即可。

初学者的定义\func

\newcommand{\func}[1]{\textit{#1}}

但是像这样的定义会浪费时间阅读两遍论点。

答案2

你似乎正在编写代码;如果是这样,那么也许你应该考虑使用列表包;请参阅包文档以了解它提供的所有可能性。以下是示例代码的一个非常简单的配置:

\documentclass{article}
\usepackage{listings}

\lstset{escapeinside=||,%
  linewidth=\textwidth,%
  basicstyle=\small,%
  breaklines%
}

\begin{document}

\begin{lstlisting}[frame=single,captionpos=top,caption={Caption text},label=myalg]               
Defined_in(subject_state,concrete_subject) |$\wedge$|
Defined_in(observer_state,concrete_observer) |$\wedge$|
Defined_in(attach,subject) |$\wedge$| Defined_in(detach,subject) |$\wedge$|
Defined_in(notify,subject) |$\wedge$|
\end{lstlisting}

\end{document}

编辑:如果你想在显示的数学中自动换行,你可以给出布雷克打包尝试;这里有一个使用egreg答案的定义的小例子:

\documentclass{article}
\usepackage{breqn}

\newcommand{\func}{\textit}
\newcommand{\var}{\textit}

\begin{document}

\begin{figure}
\small
\begin{dmath*}
\func{Defined\_in}(\var{subject\_state}, \var{concrete\_subject}) \wedge\func{Defined\_in}(\var{observer\_state}, \var{concrete\_observer}) \wedge\func{Defined\_in}(\var{attach}, \var{subject}) \wedge\func{Defined\_in}(\var{detach}, \var{subject}) \wedge\func{Defined\_in}(\var{notify}, \var{subject}) \wedge ...
\end{dmath*}
\caption{Caption text}
\label{fig:myfig}
\end{figure}

\end{document}

结果:

相关内容