目标

目标

我正在尝试添加一些数学公式并使用表格。我的 overleaf 代码如下:

\begin{flushleft}
\textit{INDICES}
\end{flushleft}

\begin{table}[h]
\begin{tabular*}{\columnwidth}{ll}
\midrule
\textit{i}& counter for employee number, \textit{i} = 1,2,…,\textit{N};\\
\midrule
\textit{m} & counter for category  number, \textmd{m} = 1,2,…,\textit{M}.\\
\bottomrule
\end{tabular*}\\[10pt]
\end{table}

\begin{flushleft}
\textit{DECISION VARIABLES}
\end{flushleft}

\begin{flushleft}
\textit{Continuous Variables}
\end{flushleft}

\begin{table}[h]
\begin{tabular*}{\columnwidth}{ll}
\midrule
\textit{\begin{math}X_m\end{math}}& increase percentage cor-responding to category \textit{m}.\\
\bottomrule
\end{tabular*}\\[10pt]
\end{table}

\begin{flushleft}
\textit{Binary Variables}
\end{flushleft}

\begin{table}[h]
\small\sf\centering
\begin{tabular*}{\columnwidth}{ll}
\midrule
\textit{\begin{math}Z_m\end{math}}& 1, if employee \textit{i} is given salary treatment \textit{m}, 0 otherwise.\\
\bottomrule
\end{tabular*}\\[10pt]
\end{table}

我需要先均衡单元格宽度,以便所有内容看起来都不错(即使第二个单元格可以移到第二行)。还要将单元格中的文本居中。此外,使用我的代码,表格和“连续变量”和“随机变量”标题后会出现一个巨大的段落空间。基本上,我想要以下格式: 如图所示,我使用的是两列页面。

如图所示,我使用的是两列页面。而且,除了这三个(左侧)之外,还有更多的表格。

答案1

这种方法的优点是可以跨页。注意:您不必对左右框使用相同的宽度。

\documentclass[twocolumn]{article}

\newlength{\boxwidth}

\newcommand{\mytabs}[2]% $1 = left box, #2 = right box
{\parbox{\boxwidth}{#1}\hfill\parbox{\boxwidth}{#2}\newline}

\newcommand{\myrule}{\ifvmode\else\newline\fi
  \rule[.6\baselineskip]{\columnwidth}{.1ex}\vspace{-.6\baselineskip}\newline}% total height = 0.4\baselineskip

\begin{document}
\parindent=0pt
\parskip=0.5\baselineskip
\boxwidth=\dimexpr 0.5\columnwidth - \tabcolsep\relax

\textit{INDICES}
\myrule
\mytabs{\textit{i}}{counter for employee number, \textit{i} = 1,2,…,\textit{N};}
\myrule
\mytabs{\textit{m}}{counter for category  number, \textmd{m} = 1,2,…,\textit{M}.}
\myrule

\textit{DECISION VARIABLES}

\textit{Continuous Variables}
\myrule
\mytabs{\textit{$X_m$}}{increase percentage cor-responding to category \textit{m}.}
\myrule

\textit{Binary Variables}
\begingroup
\small\sf
\myrule
\mytabs{\textit{$Z_m$}}{1, if employee \textit{i} is given salary treatment \textit{m}, 0 otherwise.}
\myrule
\endgroup

\end{document}

答案2

目标

在您的问题中,您提到了以下几点

  1. 插入数学公式/公式
  2. 单元格内容(在第二列?)应该居中。
  3. 每个表中某些列的宽度应该相同。

也许我还忽略了其他一些关注点?

解决方案

因此我大幅修改了你的 MWE。

  1. 数学公式:如果您加载array-package,您可以定义新的列类型,并且可以运行 LaTeX 命令,每次您进入该列或离开该列。我使用\newcolumntype定义了至少两种新的列类型,一种用于左列,一种用于右列。我还使用 and >{}-command<{}来运行 LaTeX 命令。array有关更多详细信息,请参阅 -manual(或我在 MWE 中的评论)。

    对于左列,我将其置于数学模式,方法是定义类似 的内容>{$} l <{$}。(这只是一个例子,实际代码看起来有点不同。)在此示例中,我创建了一个列,它将与左对齐,并自动处于数学模式。\begin{math} i \end{math}您可以键入 ,而i不是 。我想说,这相当方便。

  2. 使用了相同的技巧,将第二列定义为水平居中对齐。这次,我决定使用\Centering在包中定义的 -command ragged2e。您必须先在序言中加载该包。这个包/命令的一大优势是,它能够拆分单词,而不仅仅是在单词之间。因此,您可以在行上获得更优雅的单词分布。为了使示例正确工作,您\arraybackslash还必须添加。请参阅 MWE 以获取完整代码。
  3. 您希望您定义的每个表的相应列具有相同的宽度。要实现此任务,您可以使用p{<width>}列类型。

    不幸的是,p-column 使文本对齐,这与您的希望(使文本居中)相反。请参阅 2. 如何解决此问题。

    定义一个新的维度,使p所有列的宽度相同,这相当容易。另一个很大的优点是,您只需更改该维度的值,即可相应地操作所有表格。然而,还有一个问题,第一列必须有多宽。幸运的是,使用包tabularx及其X列可以轻松解决这个问题。X与定义结合的列\begin{tabularx}{\columnwidth}将占用所有剩余空间,直到达到表格的总宽度\columnwidth(无论是多少)。

更多变化

漂浮物体

您在代码中定义了\begin{table} ... \end{table}。表格是一个浮动环境。这种环境使 LaTeX 有机会将该环境的内容从输入中定义的位置移动到输出中可以实现最佳分页符的位置。最佳分页符(或者我应该说所有页面上灰度的最佳分布)对于可读性很重要。如果您定义了浮动选项[h],以抑制浮动能力,则渲染浮动环境无用

您也不使用\caption-commands,这在每个浮动环境中都是必须的,因为您必须通过其编号从正在运行的文本引用浮动元素。由于您没有创建浮动数字,也没有用它设置标签,我认为您真的不想使用浮动元素。因此,我\begin{table} ... \end{table}从您的代码中删除了。

桌子后面的空白处

您抱怨“表格后出现巨大的段落空间”。这是因为您试图将浮动对象和锚定文本组合在一起。LaTeX 没有其他机会满足您的要求(在您的代码中说明),就像您得到的输出中那样。请怜悯 LaTeX 并更改您的代码。

优雅

您已在 MWE 中启用了包的使用booktabs。因此,我下一步创建了一个优雅的表格,即删除表格边缘不必要的空白。您可以通过在@{}其左侧和右侧添加表格声明来实现这一点。正如我使用的\newcolumntype,您会在该定义中找到代码。

列宽证明

我在第一个表中添加了另一行,以证明第二列宽度的效果以及\Centering来自 package 的 -command的漂亮分布ragged2e。文本取自 en.wikipedia.org。如果文本足够多,ragged2e\Centering将使用整个单元格宽度。如果文本较少(如您的示例中所示),它会尝试更均匀地分布文本。因此行长会减少,看起来好像单元格变窄了,但事实并非如此。希望您不介意我添加这个证明。

进一步精简

您甚至可以定义一个新命令,来输入标题等部分和相应表格的组合。

您的序言中存在类似以下内容。

\newenvironment{mathtable}[1]{%
  \textit{#1}\par%
  \begin{tabularx}{\columnwidth}{M}
  \toprule}{%
    \bottomrule%
    \end{tabularx}}

并在您的文档中使用它作为

\begin{mathtable}{Continuous Variables}
  $X_m$ & increase percentage cor-responding to category $m$.\\ 
\end{tabularx}

也许你甚至可以把类似的东西\MakeUppercase{#1}放入那个环境中,以独特的方式格式化标题。

平均能量损失

这是我的 MWE。我在代码中加了很多注释。

\documentclass[11pt,twocolumn]{article}

\usepackage{array}
\usepackage{tabularx}
\usepackage{booktabs}
\usepackage{ragged2e}

%% Define some text layout variables
\setlength{\parindent}{0pt}
\setlength{\parskip}{2ex plus0.3ex minus0.1ex}

%% Define new column types.  Question was: the second columns shall
%% have allways the same width.  Therefore the first column has to be
%% of variable width. The left column is left aligned and always in
%% italics. 
\newcolumntype{L}{>{\itshape\selectfont\RaggedRight\arraybackslash} X}
%% Second column should be centerd.  I use the p-column-type in order
%% to define its width manually.
\newcolumntype{C}[1]{>{\Centering\arraybackslash}p{#1}}
%% To have the width unique, I define a new length.  If this length
%% doesn't fit, change it once and have the effect everywhere.
\newlength{\secondcolwidth}
\setlength{\secondcolwidth}{0.8\columnwidth}
%% Finally, To save further typing labour, define a combining new
%% column.
\newcolumntype{M}{@{} LC{\secondcolwidth} @{}}
%% Alternatively, you could ommit the above newlength and setlength by
%% defining the new M column like this:
% \newcolumntype{M}[1]{@{} LC{#1} @{}}
%% In that case, you have to code the tabular like this:
%   \begin{tabularx}{\columnwidth}{M{5cm}}
%% I prefer the above, as you have to change only one value to affect
%% all tables.

\begin{document}
%% What should the flushleft-environment be good for in this case?
\textit{INDICES}

%% I deleted the table environment, as it is a floating environment,
%% which you don't want to use, as you defined the floating option
%% [h].  It takes the table ad absurdum.
%% Use the new defined column types.  I order to save space on the
%% left and right margin on the table, suppres the empty white space
%% with "@{}".
\begin{tabularx}{\columnwidth}{M}
  \toprule
  %% Use math mode for the mathematical expression.
  %% use \ldots to print the ellipsis (...)
  i & counter for employee number, $i = 1,2,\ldots,N$;\\ 
  \midrule
  m & counter for category  number, $m = 1,2,\ldots,M$.\\ 
  \midrule
  $e$ & The number $e$ is a mathematical constant that is the base of
        the natural logarithm: the unique number whose natural
        logarithm is equal to one. It is approximately equal to
        2.71828 and is the limit of $(1 + 1/n)n$ as $n$ approaches
        infinity, an expression that arises in the study of compound
        interest. It can also be calculated as the sum of the infinite
        series \\
  \bottomrule
\end{tabularx}


\textit{DECISION VARIABLES}

\textit{Continuous Variables}

\begin{tabularx}{\columnwidth}{M}
  \toprule
  $X_m$ & increase percentage cor-responding to category $m$.\\ 
  \bottomrule
\end{tabularx}

\textit{Binary Variables}

\small\sf
\begin{tabularx}{\columnwidth}{M}
  \toprule
  $Z_m$ & 1, if employee $i$ is given salary treatment $m$, 0
          otherwise.\\ 
  \bottomrule
\end{tabularx}
\end{document}

结果

这就是结果。希望你喜欢。请随意尝试,\setlength{secondcolwidth}{<width}以根据您的需要调整表格的外观。

在此处输入图片描述

相关内容