如果你真的想

如果你真的想

如何向 LyX 添加具有自定义外观和 LaTeX 代码的数学命令?我知道这可以实现自定义引用命令字符样式,所以这对于数学命令来说也是可能的!

编辑:实际上,array人们确实可以通过 GUI 方式改变 LyX 中的对齐方式此外,我了解到,这array是做我在下面的“背景”中描述的事情的一个坏方法,我应该用alignat。但是,我认为这个问题仍然很重要,因为在某些情况下,人们可能希望包含自己的命令……例如array带有>{\cmd}l样式的对齐说明符,目前无法在 GUI 中输入。

背景:

我想排版一个常微分方程组,其中相似的项位于同一列,左对齐。我无法在 LyX 中做到这一点,因为我知道的所有数学环境都将其内容居中对齐。

使用 LyX 函数我能想到的最好的方法是打开一个数学方程式(Ctrl- Shift- M),然后键入\array,然后按空格键,这样就会打开一个类似表格的环境,我可以在其中输入数学运算:

LyX 中的空数组环境

但是,我无法像在数学环境之外创建表时那样更改列的对齐方式。这会导致如下代码:

\documentclass{article}   % Added for MWE
\begin{document}          % Added for MWE
\newcommand\d{\mathrm{d}} % Added for MWE
\[
\begin{array}{ccc}
\frac{\d V}{\d t} & =-\delta_{V} & -k_{inf}\cdot C\cdot V\\
\frac{\d C}{\d t} & =\lambda-\delta_{C} & -k_{inf}\cdot C\cdot V
\end{array}
\]
\end{document}             % Added for MWE

看起来像这样:

以上代码的视图

我的问题是:我还不能改变环境{ccc}的一部分array

我想继续使用 LyX,因为预览功能可以让我免于重复编译文档,这需要相当长的时间。

到目前为止我能想到的最好的办法就是将原始 LaTeX 代码嵌入“预览”框中(代码与上面的相同,除了lll):

LyX 视图:预览环境中的 ERT

手动获取所需结果

因此,最好的方法是在 LyX 中定义一个命令,该命令看起来像arrayLyX 窗口中的命令,并调用自定义环境。这使用我在宏中预先定义的正确对齐方式:

% Defined in LyX preamble
\newenvironment{myarray}{\begin{array}{\al}}{\end{array}}
% Defined as Evil Red Text (ERT) before Equation
\newcommand\al{llll}
% Created by LyX with the same appearance as if I had typed
% \array in LyX math mode
\[
\begin{myarray}
\frac{\d V}{\d t} & =-\delta_{V} & -k_{inf}\cdot C\cdot V\\
\frac{\d C}{\d t} & =\lambda-\delta_{C} & -k_{inf}\cdot C\cdot V
\end{myarray}
\]

答案1

当然,您可以更改 的列说明符array。在++Ctrl之后,单击ShiftM在此处输入图片描述按钮。这将显示如下所示的对话框:

在此处输入图片描述

您可以在此处设置行数和列数,并在底部的文本字段中定义列说明符。

要更改现有列,请将光标放在列中,然后转到编辑 --> 行和列。该子菜单中的前三个条目用于左对齐、居中对齐和右对齐。它们也有键盘快捷键:

  • 左:Alt+MCL
  • 中心:Alt+MCM
  • 右:Alt+MCR

如果你真的想

你也可以得到更好的结果array,尽管我不得不承认使用 GUI 在 LyX 中执行此操作有点麻烦。除非我错过了什么,否则我从来不用 LyX(除了在这里回答问题)。

为此,我宁愿将整个内容写在 ERT 中。或者使用alignatBernard 提到的方法,它可以通过插入 --> 数学 --> AMS alignat 直接使用。

但无论如何,如果你喜欢痛苦,请先进入文档 --> 设置 --> LaTeX 序言,然后添加

\usepackage{array}
\newcommand\diff{\mathop{}\!\mathrm{d}} % courtesy of egreg

array包允许您使用例如在列中每个单元格的开头>{stuff}插入。该宏用于排版差分 d,如果您不想让它直立,请删除。或者根本不要使用它。stuff\diff\mathrm

在您的文档中,添加显示方程并打开数组对话框,如本答案最顶部所述。在指定列的字段中,写入

l@{}>{{}}l@{}>{{}}l

这将删除列之间的空格,并在第二列和第三列的开头添加一个空组。空组的目的是为了在等号和减号周围获得正确的空间。但是不要在这个字符串中添加任何空格,这似乎会使其恢复为c列。

然后按照在代码中所做的那样填写数组,在第一个单元格中填写分数,在第二个单元格中填写=和项,在第三个单元格中填写项。\deltak_{\mathrm{inf}}

一些说明:

  • 我使用显示分数而不是标准分数:

    在此处输入图片描述

  • 要使用\diff宏,只需输入\diff

  • 有一个字体按钮位于数学工具栏上分数按钮的右侧(上图),您可以使用\mathrm{inf}它来输入下标k。它是字母 A 的四倍。

  • 您需要对 进行一些垂直拉伸array,因此将光标放在 之前array,但是里面数学环境,并写下

    \renewcommand\arraystretch{2.5}
    

    2.5可能不是理想的,因此请根据您的喜好进行调整。

所有这些的结果是:

在此处输入图片描述

这是.lyx生成上述屏幕截图的完整文件。

#LyX 2.2 created this file. For more info see http://www.lyx.org/
\lyxformat 508
\begin_document
\begin_header
\save_transient_properties true
\origin unavailable
\textclass article
\begin_preamble
\usepackage{array}
\newcommand\diff{\mathop{}\!\mathrm{d}} % courtesy of egreg
\end_preamble
\use_default_options true
\maintain_unincluded_children false
\language english
\language_package default
\inputencoding auto
\fontencoding global
\font_roman "default" "default"
\font_sans "default" "default"
\font_typewriter "default" "default"
\font_math "auto" "auto"
\font_default_family default
\use_non_tex_fonts false
\font_sc false
\font_osf false
\font_sf_scale 100 100
\font_tt_scale 100 100
\graphics default
\default_output_format default
\output_sync 0
\bibtex_command default
\index_command default
\paperfontsize default
\spacing single
\use_hyperref false
\papersize default
\use_geometry false
\use_package amsmath 1
\use_package amssymb 1
\use_package cancel 1
\use_package esint 1
\use_package mathdots 1
\use_package mathtools 1
\use_package mhchem 1
\use_package stackrel 1
\use_package stmaryrd 1
\use_package undertilde 1
\cite_engine basic
\cite_engine_type default
\biblio_style plain
\use_bibtopic false
\use_indices false
\paperorientation portrait
\suppress_date false
\justification true
\use_refstyle 1
\index Index
\shortcut idx
\color #008000
\end_index
\secnumdepth 3
\tocdepth 3
\paragraph_separation indent
\paragraph_indentation default
\quotes_language english
\papercolumns 1
\papersides 1
\paperpagestyle default
\tracking_changes false
\output_changes false
\html_math_output 0
\html_css_as_file 0
\html_be_strict false
\end_header

\begin_body

\begin_layout Standard
\begin_inset Formula 
\[
\renewcommand\arraystretch{2.5}\begin{array}{l@{}>{{}}l@{}>{{}}l}
\dfrac{\diff V}{\diff t} & =-\delta_{V} & -k_{\mathrm{inf}}\cdot C\cdot\\
\dfrac{\diff C}{\diff t} & =\lambda-\delta_{C} & -k_{\mathrm{inf}}\cdot C\cdot V
\end{array}
\]

\end_inset


\end_layout

\end_body
\end_document

答案2

间距不太好。我认为您需要的是环境alignat*,有两列(因此是 3 &)。此外,您可以使用包节省大量输入esdiff。此外,inf应该直立输入,而不是像三个变量那样i, n, f。有一个\inf命令可以做到这一点。我不知道如何使用 LyX 获得所有这些,但代码应该是这样的:

\documentclass{article} % Added for MWE
\usepackage{mathtools}
\usepackage{esdiff} %

\begin{document} % Added for MWE

\begin{alignat*}{2}
  \diff{V}{t} & ={} &-\delta_{V} & -k_{\inf}\cdot C\cdot V \\
   \diff{C}{t} & = {}& \lambda-\delta_{C}& -k_{\inf}\cdot C\cdot V
\end{alignat*}

\end{document} 

在此处输入图片描述

相关内容