增加算法和列表中标题水平线的宽度

增加算法和列表中标题水平线的宽度

我已经能够增加水平线的宽度,以表示第二个答案LaTeX 表格:如何使水平线变粗或变细(通常为 \hline)?。现在,我想在算法和列表环境中执行相同操作,但我不知道该怎么做。可以吗?如果可以,怎么做?

例如,以下示例

\documentclass[10pt]{article}
\usepackage{algorithm}
\usepackage{algpseudocode}
\usepackage{listings}
\usepackage{makecell}

\begin{document}
\newcommand{\blah}{blah blah blah blah blah\\}
\newcommand{\hlinethick}{\Xhline{4\arrayrulewidth}}

\blah \blah \blah

\begin{lstlisting}[frame=tb]
    return 1;
\end{lstlisting}

\begin{algorithm}
    \caption{My algorithm.}
\begin{algorithmic}[1]
    \Procedure{Algorithm}{}
    \State \textbf{return} $mat$
    \EndProcedure
\end{algorithmic}
\end{algorithm}

\blah \blah \blah

\begin{table}
  \begin{center}
  \caption{My table.}
    \begin{tabular}{c r r r}
    \hlinethick
      header1 & header2 & header3 \\
    \hline
      $T_{s}$              & 7 & 14 & 21 \\
      $T_{i}$              & 3 &  3 & 20 \\
    \hlinethick
    \end{tabular}
  \end{center}
\end{table}

\end{document}

结果是

在此处输入图片描述

答案1

listings包提供了一个名为的键framerule,它采用尺寸值(例如2pt)并确定列表中使用的规则的粗细。

改变算法中使用的规则的厚度更为复杂。该algorithm包将这些规则的绘制委托给float包,不允许用户以任何直接的方式调整厚度;相反,厚度在所谓的浮动样式因此,你唯一的选择是重新定义浮动样式感兴趣的(此处为默认值ruled)。

为了方便和更好的可维护性,我定义了一个新的长度宏(称为\hrulethickness),它控制文档的表格、列表和算法中使用的规则的粗细。见下文。

在此处输入图片描述

\documentclass[10pt]{article}
\usepackage{algorithm}
\usepackage{algpseudocode}
\usepackage{listings}
\usepackage{makecell}

% one length to rule them all
\newlength\hrulethickness
\setlength\hrulethickness{4\arrayrulewidth}
\newcommand{\hlinethick}{\Xhline{\hrulethickness}}

% `listings' settings
\lstset{framerule=\hrulethickness}

% redefinition of the `ruled' floatstyle
% (defined in the `float' package, used by the `algorithm' package)
\makeatletter
\renewcommand\fs@ruled{\def\@fs@cfont{\bfseries}\let\@fs@capt\floatc@ruled
  \def\@fs@pre{\hrule height \hrulethickness depth0pt \kern2pt}%
  \def\@fs@post{\kern2pt\hrule height \hrulethickness depth0pt \relax}%
  \def\@fs@mid{\kern2pt\hrule height \hrulethickness depth0pt \kern2pt}%
  \let\@fs@iftopcapt\iftrue}
\makeatother

\begin{document}

\newcommand{\blah}{blah blah blah blah blah\\}
\blah \blah \blah

\begin{lstlisting}[frame=tb]
    return 1;
\end{lstlisting}

\begin{algorithm}
    \caption{My algorithm.}
\begin{algorithmic}[1]
    \Procedure{Algorithm}{}
    \State \textbf{return} $mat$
    \EndProcedure
\end{algorithmic}
\end{algorithm}

\blah \blah \blah

\begin{table}
  \begin{center}
  \caption{My table.}
    \begin{tabular}{c r r r}
    \hlinethick
      header1 & header2 & header3 \\
    \hline
      $T_{s}$              & 7 & 14 & 21 \\
      $T_{i}$              & 3 &  3 & 20 \\
    \hlinethick
    \end{tabular}
  \end{center}
\end{table}

\end{document}

相关内容