右侧对齐小页面

右侧对齐小页面

我以为这是一件小事,但我似乎无法理解这一点。

我想创建一个图例,它位于页面的右侧。我围绕minipage我想放在右侧的环境创建了一个环境,并使用\begin{flushright}。但是,我无法在这个小页面环境中添加标题,以便它显示在周围环境的顶部。

MWE 只是一个例子。我这里不使用表格。那么如何将我的标题对齐到其他环境(在本例中是表格)的正上方?

梅威瑟:

\documentclass[paper=a4,landscape]{scrartcl}
\usepackage{longtable}

\begin{document}

    \begin{minipage}[t]{0.95\textwidth}
        Some Title.
        \begin{flushright}
            \begin{longtable}{ll}
                Bla & Bla \\
                Blubb & Blubb
            \end{longtable}

        \end{flushright}
    \end{minipage}

\end{document}

答案1

事实上,我会使用一个tabular环境来放置标题和文本;对于文本,使用一p{<length>}列(并@{}删除多余的空间);在里面tabular,标题可以使用以下方式居中\multicolumn

\documentclass{scrartcl}
\usepackage{showframe}
\usepackage{lipsum}

\begin{document}


\hfill\begin{tabular}{@{}p{.5\linewidth}@{}}
\multicolumn{1}{@{}c@{}}{Some title} \\
\lipsum[4]
\end{tabular}

\end{document}

在此处输入图片描述

如果要多次使用此结构,则可以定义一个环境;在下面的例子中,新定义的myenv环境有一个强制参数(标题)和一个可选参数(用于排版文本的宽度,默认值为0.5\linewidth):

\documentclass{scrartcl}
\usepackage{showframe}
\usepackage{lipsum}

\newenvironment{myenv}[2][.5\linewidth]
  {\par\hfill\tabular{@{}p{#1}@{}}
  \multicolumn{1}{@{}c@{}}{#2} \\ }
  {\endtabular\par}

\begin{document}

\begin{myenv}{Some title}
\lipsum*[4]
\end{myenv}

\begin{myenv}[.8\linewidth]{Some title}
\lipsum*[4]
\end{myenv}

\end{document}

在此处输入图片描述

如果标题跨越多行,则可以array在序言中加载该包:

\usepackage{array}

然后说

\newenvironment{myenv}[2][.5\linewidth]
  {\par\hfill\tabular{@{}p{#1}@{}}
  \multicolumn{1}{@{}>{\centering}p{#1}@{}}{#2} \\ }
  {\endtabular\par}

答案2

您可以使用 100% 纯 LaTeX 以及框和minipage环境:

带展示框: 使用 showframe 包输出

无显示框(见示例): 无显示框输出

例子:

\documentclass{scrartcl}
\usepackage{lipsum}

\begin{document}
\noindent% prevent the box to be shifted a bit to the right
\makebox[\textwidth][r]{% create a box, with it's content aligned to the right
  \begin{minipage}{.5\textwidth}% create a content half width
    \section{Some title}
    \lipsum[4]
  \end{minipage}
}
\end{document}

答案3

您可以使用varwidth来自包裹varwidth创建一个围绕内容自然宽度的框并使用\hfill

在此处输入图片描述

笔记:

  • 我用的是包裹showframe包来显示边距(您可以看到表格与右边距对齐)。
  • 第一个\hfill确保varwidth环境与右边距对齐。
  • 后续\hfill操作用于确保标题居中。
  • 添加是@{}为了消除表格中最后一列右侧的列填充。

代码:

\documentclass{scrartcl}
\usepackage[paperwidth=9.0cm,showframe]{geometry}
\usepackage{varwidth}
\usepackage{longtable}

\begin{document}
    \hfill
    \begin{varwidth}{\linewidth}
    \hfill\null Some Title.\hfill\null
        \begin{longtable}{ll@{}}
            Bla & Bla \\
            Blubb & Blubb
        \end{longtable}
    \end{varwidth}
\end{document}

相关内容