带部分边框的阵列

带部分边框的阵列

我正在编写一些类似代码的东西,并且缩进内容以与成对的参数垂直对齐。我对齐文本的解决方案是使用嵌套数组,但更改为表格可能更有意义,因为我可能想离开数学模式。我的表格看起来像这样:

\begin{array}[t]{ll}
  functionName:
    & param1 \\
    & param2
\end{array}

param1因为用更多的函数调用来替换和是很常见的param2,而且每次都要输入很多内容,所以我将其转换为宏:

\newcommand{\nest}[3]{
  \begin{array}[t]{@{}l@{}l@{}}
    #1
    &#2\\
    &#3
  \end{array}
}

@{}是因为我不想在单元格之间留有多余的空格;我希望它看起来好像每一行都是一个仅在开头缩进的文本字符串。

我想要一种方法来从 的左下角functionName到数组底部添加一条垂直线。我可以通过用 替换 来接近我想要的效果{ll}{|ll}但这会沿着整个左边缘添加边框,而不是跳过第一行文本。

之前的建议是使用\multicolumn来移除第一行左边缘的边框。如果param1用函数调用替换,第一个表格行会变得更高,但我想要移除的边框量保持不变。另一个建议是确定最终会有多少列,并使用\multicolumn让内容占据正确的宽度。我认为这个建议是因为我之前的 MWE 太小了,所以我做了一个新的例子。

这是新的示例代码,其中包括从第一行删除边框的方法:

\documentclass{article}

\newcommand{\nest}[3]{
  \begin{array}[t]{|@{}l@{}l@{}}
    \multicolumn{1}{@{}l@{}}{#1}
    &#2\\
    &#3
  \end{array}
}

\newcommand{\AND}[2]{\nest{\wedge}{#1}{#2}}
\newcommand{\IMPLY}[2]{\nest{\rightarrow}{#1}{#2}}
\newcommand{\XNOR}[2]{\nest{\leftrightarrow}{#1}{#2}}

\begin{document}

\[\XNOR{\IMPLY{\AND{\IMPLY{P}{Q}}{P}}{Q}}
       {\IMPLY{\AND{\neg Q}{\IMPLY{P}{Q}}}{\neg P}}\]

\end{document}

得出的结果为:

删除第一行的边框

我想要这样的东西:

仅从第一行的第一行移除边框

有什么好方法可以做到这一点吗?

相关内容