![简单居中表格单元格中的汉字注音未对齐](https://linux22.com/image/427232/%E7%AE%80%E5%8D%95%E5%B1%85%E4%B8%AD%E8%A1%A8%E6%A0%BC%E5%8D%95%E5%85%83%E6%A0%BC%E4%B8%AD%E7%9A%84%E6%B1%89%E5%AD%97%E6%B3%A8%E9%9F%B3%E6%9C%AA%E5%AF%B9%E9%BD%90.png)
在简单的表格环境中,假名拼写似乎不对齐。MWE 中的 Ruby 技巧来自这个答案。
\documentclass{article}
\usepackage{xeCJK}
\setCJKmainfont{ipaexm.ttf}
\usepackage{ruby}
\renewcommand\rubysep{.05ex}
\renewcommand\rubysize{.4}
\let\oldruby\ruby
\def\ruby#1#2{\oldruby{#1}{#2}\futurelet\next\addCJKglue}
\def\addCJKglue{\ifx\next\ruby \CJKglue \fi}
\usepackage{array}
\begin{document}
\ruby{一}{いち}\ruby{日}{にち}%Correct
\begin{tabular}{|c|}
\hline
\ruby{一}{いち}\ruby{日}{にち}\\%Furigana misaligned
\hline
\end{tabular}
\begin{tabular}{|m{10mm}|}
\hline
\ruby{一}{いち}\ruby{日}{にち}\\%Correct
\hline
\end{tabular}
\end{document}
我想了解为什么最自然的方法\begin{tabular}{|c|}
会失败,以及如何修复它(因为我不想手动设置列宽)。
答案1
ruby 宏根据列\baselineskip
中的 0来确定其高度c
,但您可以使用array
包>
声明来设置它。
\documentclass{article}
\usepackage{xeCJK}
\setCJKmainfont{ipaexm.ttf}
\usepackage{ruby}
\renewcommand\rubysep{.05ex}
\renewcommand\rubysize{.4}
\let\oldruby\ruby
\def\ruby#1#2{\oldruby{#1}{#2}\futurelet\next\addCJKglue}
\def\addCJKglue{\ifx\next\ruby \CJKglue \fi}
\usepackage{array}
\begin{document}
\ruby{一}{いち}\ruby{日}{にち}%Correct
\begin{tabular}{|>{\baselineskip\normalbaselineskip}c|}
\hline
\ruby{一}{いち}\ruby{日}{にち}\\%Furigana misaligned
\hline
\end{tabular}
\begin{tabular}{|m{10mm}|}
\hline
\ruby{一}{いち}\ruby{日}{にち}\\%Correct
\hline
\end{tabular}
\end{document}