我有一个\xymatrix
4 行 2 列的 。我想将其水平居中。我用过,\centerline{}
但它(当然)只是将 创建的整个框居中\xymatrix
。
由于我的矩阵条目是文本,其中一个比其他的要宽,因此将整个框居中似乎不太合适。我想将其相对于矩阵的中心而不是相对于生成的框的中心居中。可以吗?
以下是一个例子:
\documentclass{article}
\usepackage[all]{xy}
\begin{document}
\hrule
\centerline{\xymatrix{
\txt{short} \ar[d] \ar[r] & \txt{short} \ar[d] \\
\txt{long long long long long} \ar[d] \ar[r] & \txt{short} \ar[d] \\
\txt{short} \ar[r] & \txt{short}
}}
\hrule
\end{document}
答案1
恐怕这无法从内部完成\xymatrix
,而且需要进行一些计算。
因此,我们加载calc
包并计算必须添加的水平间距才能实现您想要的效果:
\usepackage{calc}
\newlength\mylength
\setlength\mylength{(\widthof{long long long long long}-\widthof{short})/2}
然后我们添加一个\hspace*{\mylength}
来将其移动\xymatrix
到所需的位置。
梅威瑟:
\documentclass{article}
\usepackage[all]{xy}
\usepackage{calc}
\newlength\mylength
\setlength\mylength{(\widthof{long long long long long}-\widthof{short})/2}
\begin{document}
\hrule
\centerline{\xymatrix{
\txt{short} \ar[d] \ar[r] & \txt{short} \ar[d] \\
\txt{long long long long long} \ar[d] \ar[r] & \txt{short} \ar[d] \\
\txt{short} \ar[r] & \txt{short}
}\hspace*{\mylength}}
\hrule
\end{document}
输出:
答案2
\documentclass{article}
\usepackage[all]{xy}
\begin{document}
\hrule
\centerline{\xymatrix{%
\txt{short} \ar[d] \ar[r] & \txt{short} \ar[d] \\
\txt{\makebox[2em][r]{long long long long long}} \ar[d] \ar[r] & \txt{short} \ar[d] \\
\txt{short} \ar[r] & \txt{short}
}}
\hrule
\end{document}