垂直杆转为水平

垂直杆转为水平

以下是 MWE:

\documentclass[a4paper]{report}
\usepackage{graphicx,multirow,multicol}
\makeatletter
\newcommand{\blocks}[9][-10]{
    \def\bar{\@ifstar{\raisebox{-5pt}{\scb{1}[1]{\Huge{|}}}\hsp{0.2cm}}{\raisebox{-14pt}{\scb{1}[1.3]{\Huge{|}}}\hsp{0.2cm}}}

    \!\!\mat{cccc}
        #2&#3\hsp{-0.2cm}&\multicolumn{2}{r}{\multirow{2}{*}{\bar\raisebox{#1pt}{\Huge{$#6$}}}}\\
        #4&#5\hsp{-0.2cm}\\[0.2em]\hline\multicolumn{2}{r}{\multirow{2}{*}{\raisebox{#9pt}{\Huge{$#7$}\hsp{-0.2cm}}}}&\multicolumn{2}{r}{\multirow{2}{*}{\bar*\raisebox{#9pt}{\Huge{$#8$}}}}\\
        \\
        \emat\!\!}
\makeatother
\newcommand{\mat}{\begin{array}}
\newcommand{\emat}{\end{array}}
\newcommand{\scb}{\scalebox}
\newcommand{\hsp}{\hspace}

\begin{document}
$$\blocks{\cosh u}{\sinh u}{\sinh u}{\cosh u}{0}{0}{1}.$$
\end{document}

排版后,它会产生我期望的结果,只是 | 显示为水平条。为什么?为什么要将它们更改为$|$垂直?

答案1

ascii|有内部代码"7C

在计算机现代文本字体中,位置"7C由破折号占据。

当您将某物装入盒子(\raisebox此处)时,它会恢复为水平模式,从而|访问破折号。

正如您所发现的,$|$访问垂直条,因为在数学字体中,此符号使用 ascii 位置。

纯属运气,你找到了一个组合,看上去它所改变的只是形状的方向。如果你想要垂直放置该条,请记住如果它在一个框中,它必须处于数学模式。

答案2

重新定义 确实是一个坏主意\bar。另外,你手动执行已经可用的操作,使用你不期望的字符:|在文本模式下打字并不是一个好主意,除非你正在加载 T1 编码。

\documentclass[a4paper]{report}
\newcommand{\blocks}[7]{%
  \begin{array}{c|c}
  \begin{array}{@{}cc@{}}
  #1 & #2 \\
  #3 & #4
  \end{array} &
  \xbox[-0.8ex]{#5} \\[2ex]
  \hline
  & \\[-1.5ex]
  \xbox{#6} &
  \xbox{#7}
  \end{array}%
}
\newcommand\xbox[2][0pt]{%
  \begin{tabular}{@{}c@{}}\raisebox{#1}{\Huge\ $#2$\ }\end{tabular}% 
}

\begin{document}
\[
\blocks{\cosh u}{\sinh u}{\sinh u}{\cosh u}{0}{0}{1}
\]
\end{document}

在此处输入图片描述

答案3

该示例显示了许多问题,其中包括:

例子:

\documentclass[a4paper]{report}

\makeatletter
\newcommand*{\blocks}[7]{%
  \begingroup
    \newcommand*{\hugemath}[1]{\mbox{\Huge$##1$}}%
    \begin{tabular}{r|l}
      $%
        % @{} removes space at the left and right, because
        % the surrounding tabular adds already space.
        \begin{array}[b]{@{}cc@{}}
          #1&#2\\
          #3&#4%
        \end{array}
      $%
      & \mbox{\Huge$#5$}\\
      \hline
      % the following trick adds vertical space above
      % the contents of the row with the amount of the depth
      % of a table line. Then the `\hline` is in the middle.
      % \@finalstrut\@arstrutbox is the depth of a tabular
      % line (e.g. this is added at the end of a line in
      % a cell of column type "p".
      \settodepth{\dimen@}{\@finalstrut\@arstrutbox}%
      \raisebox{\dimen@}{%
        \vphantom{\hugemath#6#7}%
      }%
      \hugemath{#6}
      & \hugemath{#7}%
    \end{tabular}%
  \endgroup
}
\makeatother

\begin{document}
\[
  \blocks{\cosh u}{\sinh u}{\sinh u}{\cosh u}{0}{0}{1}
\]
\end{document}

结果

答案4

默认的 OT1 编码在 ASCII 标点符号槽中有连字符(此处为破折号)和其他内容,请尝试

\documentclass{article}

\begin{document}

OT1 is strange < | >

\end{document}

相关内容