Tcolorbox、`halign=center` 和单词之间的空格太大

Tcolorbox、`halign=center` 和单词之间的空格太大

我不知道为什么,但是当我将一些句子放在 with 里面时tcolorboxhalign=center如果我改变字体大小(使用 lualatex),那么单词之间的间距就是在环境之前定义的间距......所以它看起来很尴尬,因为我无法真正改变里面的字体大小:

在此处输入图片描述

\documentclass{article}
\usepackage{fontspec}
\usepackage{luatex85}
\usepackage[most]{tcolorbox}
\tcbuselibrary{raster,skins,breakable}

\begin{document}
\fontsize{50pt}{50pt}\selectfont
Here is a 50pt text.
\begin{tcolorbox}[halign=center]
  {\fontsize{10pt}{10pt}\selectfont
    Look my spacing.} % Too big spacing
  {\fontsize{20pt}{20pt}\selectfont
    And mine.} % Too big spacing
  {\fontsize{50pt}{50pt}\selectfont
    And mine.} % Good
\end{tcolorbox}

% Why does this line change the spacing, even if I use fontsize later?
\fontsize{10pt}{10pt}\selectfont
\begin{tcolorbox}[halign=center]
  {\fontsize{10pt}{10pt}\selectfont
    Look my spacing.} % Good
  {\fontsize{20pt}{20pt}\selectfont
    And mine.} % Too small spacing
  {\fontsize{50pt}{50pt}\selectfont
    And mine.} % Too small spacing
\end{tcolorbox}

\end{document}

知道问题是什么吗?我想将文本居中,仅在 tcolorbox 内更改字体大小,最终能够在同一个 tcolorbox 中使用多种尺寸。

谢谢!

\begin{center}...\end{center}-- 编辑 -- 我找到了一个使用而不是...的解决方案halign=center,但我仍然不明白 有什么问题halign=center。我之所以问这个问题,是因为现在 lua 脚本正在生成一些 latex 代码,它实际上使用了halign=center

答案1

tcolorbox文档(第 30 页) 建议使用halign=flush centeroption 而不是halign=center。它还会重定向到第 234 至 238 页中的相应解释pgfmanual

\documentclass{article}
\usepackage{fontspec}
\usepackage{luatex85}
\usepackage[most]{tcolorbox}
\tcbuselibrary{raster,skins,breakable}

\begin{document}
\begin{tcolorbox}
  {\fontsize{10pt}{10pt}\selectfont
    Look my spacing.} % Too big spacing
  {\fontsize{20pt}{20pt}\selectfont
    A larger font should show a larger spacing.} % Too big spacing
  {\fontsize{50pt}{50pt}\selectfont
    And even a larger one if font size is larger.} % Good
\end{tcolorbox}

\begin{tcolorbox}[halign=center]
  {\fontsize{10pt}{10pt}\selectfont
    Look my spacing.} % Too big spacing
  {\fontsize{20pt}{20pt}\selectfont
    A larger font should show a larger spacing.} % Too big spacing
  {\fontsize{50pt}{50pt}\selectfont
    And even a larger one if font size is larger.} % Good
\end{tcolorbox}

\begin{tcolorbox}[halign=flush center]
  {\fontsize{10pt}{10pt}\selectfont
    Look my spacing.} % Too big spacing
  {\fontsize{20pt}{20pt}\selectfont
    A larger font should show a larger spacing.} % Too big spacing
  {\fontsize{50pt}{50pt}\selectfont
    And even a larger one if font size is larger.} % Good
\end{tcolorbox}
\end{document}

在此处输入图片描述

答案2

我遇到了和你一样的问题。你可以通过在相应的框选项中替换halign=center来轻松解决它。before upper*=\centering

在此处输入图片描述

\documentclass{article}
\usepackage{fontspec}
\usepackage{luatex85}
\usepackage[most]{tcolorbox}
\tcbuselibrary{raster,skins,breakable}

\begin{document}
    \fontsize{50pt}{50pt}\selectfont
    Here is a 50pt text.
    \begin{tcolorbox}[before upper*=\centering]
        {\fontsize{10pt}{10pt}\selectfont
            Look my spacing.}\\
        {\fontsize{20pt}{20pt}\selectfont
            And mine.}\\
        {\fontsize{50pt}{50pt}\selectfont
            And mine.}
    \end{tcolorbox}
\end{document}

相关内容