我想使用不带软件包的标准 LaTeX 将两个文本放在一个尺寸为 100*\textwidth 的框中,一个放在中间,一个放在顶部或底部。我使用tabular
以下方法实现了此目的:
\documentclass{article}
\usepackage{xcolor}
\begin{document}
\begin{center}
\fbox{
\parbox{\textwidth}{
\centering\begin{tabular}{c}
\textbf{\large }\\[2cm]
\textbf{\huge This is a title}\\[2cm]
\textbf{\large This is a small text}
\end{tabular}
}
}
\end{center}
\end{document}
我想知道有没有更简单的方法?例如使用\parbox
和\raisebox
?我尝试使用来生成它\parbox
,但在添加第二个文本后,中心文本不再保持居中。使用时出现同样的问题vbox
(我知道如何使用\phantom
或修复它,\setbox
但我正在寻找一种干净的方法)
\documentclass{article}
\usepackage{xcolor}
\begin{document}
\fbox{
\centering\vbox{\vskip 2cm
\mbox{\textbf{\huge This is a title}}
\vskip 2cm
\mbox{\textbf{\large This is a subheading}}
}
}
\end{document}
4
5 个回答
5
图片模式(不仅适用于):
\documentclass{article}
\begin{document}
\noindent X\dotfill X
\noindent X\dotfill X
\noindent
\begin{picture}(0,100pt)
\put(0,0){\framebox(\textwidth,100pt){\Large\bfseries This is a title}}
\put(0,0){\makebox(\textwidth,100pt)[b]{\strut\small this is small text}}
\end{picture}
\noindent X\dotfill X
\end{document}
2
-
即使在测试时,最好在行尾添加 %,否则 @egreg 会非常不高兴:)
– -
3@CFG 这里没有缺失
%
(图片模式处理空白)
–
|
如果要使用,\parbox
则应使用该宏的可选参数来指定目标高度和填充方法。然后,您可以将其包装\fbox
起来:
\documentclass{article}
\begin{document}
\fbox
{%
\parbox[b][5cm][s]{\dimexpr\linewidth-2\fboxsep-2\fboxrule\relax}
{%
\centering
\vfil
{\bfseries\Large This is a title\par}%
\vfil
{\bfseries This is small text\par}%
}%
}
\end{document}
为了使文本完美地垂直居中,最简单的解决方案就是将与框底部相同的内容放在其顶部,但不可见。
\documentclass{article}
\begin{document}
\fbox
{%
\parbox[b][5cm][s]{\dimexpr\linewidth-2\fboxsep-2\fboxrule\relax}
{%
\centering
\phantom{{\bfseries This is small text}}\par
\vfil
{\bfseries\Large This is a title\par}%
\vfil
{\bfseries This is small text\par}%
}%
}
\end{document}
5
-
中心文本并非垂直居中。我说得对吗?
– -
@CFG 不,不是。一定要这样吗?
– -
是的。这正是我的问题之一。
– -
@CFG 完成。(更多字符)
– -
啊,你用了和
\phantom
我问题中提到的相同的技巧()。有没有直接的方法?例如,将第一个文本放在中间,然后添加第二个文本而不依赖于第一个文本?
–
|
以下使用原始 TeX(除了\centering
、、\bfseries
和\strut
、\Large
以及和\documentclass{article}
和\begin{document}
)\end{document}
。此答案旨在提供教育,而不是用于 LaTeX 文档的生产性用途。
\documentclass{article}
\begin{document}
\vbox
{%
\hrule
\noindent
\vrule
\vbox to 5cm
{%
\advance\hsize-.8pt % compensate for the two \vrule
\centering
\vfil
{\bfseries\Large This is a title\strut\par}%
\vfil
{\bfseries This is small text\strut\par}%
}%
\vrule
\hrule
}
\end{document}
一个更加精简的版本,去掉\centering
(显示的代码并不 100% 等同于 LaTeX 的\centering
),并使文本垂直居中:
\documentclass{article}
\begin{document}
\vbox
{%
\hrule
\noindent
\vrule
\vbox to 5cm
{%
\advance\hsize-.8pt % compensate for the two \vrule
\leftskip=0pt plus 1fil
\rightskip=0pt plus 1fil
\parfillskip=0pt
\parindent=0pt
\setbox0\vbox{\bfseries This is small text\strut\par}%
\vrule height \ht0 depth \dp0 width 0pt
\vfil
{\bfseries\Large This is a title\strut\par}%
\vfil
\box0
}%
\vrule
\hrule
}
\end{document}
|
以下是使用 Tikz 包来实现此目的的一种方式:
\documentclass[10pt,a4paper]{article}
\usepackage{tikz}
\begin{document}
Just in case \dots\
\tikz{
\node[draw,font={\huge\bfseries},inner sep=25mm] (A) {This is a title};
\node[anchor=south,font={\large}] at (A.south) {This is small text};}
\dots\ you liked some text here.
\end{document}
在哪里:
\tikz{ ... }
tikzpicture
是环境的缩写- 把它想象
\node
成一个标签,你可以把它放在 [draw,font={\huge\bfseries},inner sep=25mm]
绘制形状;使用inner sep
只是改变形状大小的一种可能性- 说出第一个
\node[...] (A) {...};
- 将第二个节点相对于它放置,即
anchor
它south
(中下)at A's south
- 在这种简单的情况下,你不需要明确说明坐标,例如
\node[...] (A) at (0,0) {...};
- 我放了一些内联文本以供参考
2
-
但是您需要加载一个包(而且是一个大包……=)
– -
这就是为什么它写在那里;-) // 建议分析无包要求……
–
|
例如使用 \parbox 和 \raisebox?
好吧,如果更简单的话,这是有争议的,但您可以将标题放在一个迷你页面中,使其在框中垂直和水平居中,然后使用它\raisebox
在某个地方设置其他文本而不会影响标题位置。坏消息是底部或顶部文本的确切位置由您决定。
\documentclass{article}
\usepackage{xcolor}
\usepackage{lipsum}
\begin{document}
{\bfseries\centering\large
\noindent\fcolorbox{blue}{cyan!05}{%
\begin{minipage}[c][5cm][c]{\dimexpr\linewidth-2\fboxsep-2\fboxrule}
\centering\huge This is a title
\end{minipage}}
\raisebox{.5cm}[0pt][0pt]{This is a small text at bottom}\par
\raisebox{5cm}[-5cm][-6cm]{This is a small text at top}\par}
\lipsum[1][1-5]
\end{document}
|
\vbox
,\vskip
您的代码中没有任何内容是原始 TeX。我猜您的意思是没有软件包的标准 LaTeX。–
–
–
%
在行尾添加,否则@egreg 会很不高兴–
|