
警告: これは次の質問へのフォローアップです頭字語以外のエントリの長い形式(最初に使用された形式のような)エントリを表示します。。
としてマフプ他の投稿で提案されたように、私は先に進み、単位の問題 (フィールドの使用) に対処するために、独自の用語集スタイル (およびいくつかの列指定子) を定義しました。現在の定義は次のようになります (最初の用語集で使用されているスタイルと2 番目の用語集で使用されているuser1
スタイル):tabx3col
tabx4col
\newcolumntype{L}[1]{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\newcolumntype{C}[1]{>{\centering\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\newcolumntype{R}[1]{>{\raggedleft\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\newglossarystyle{tabx3col}{%
% put the glossary in a longtable environment:
\renewenvironment{theglossary}%
{\begin{longtable}{L{0.2\textwidth}L{0.6\textwidth}R{0.2\textwidth}}}%
{\end{longtable}}%
% Set the table's header:
\renewcommand*{\glossaryheader}{}%
% No heading between groups:
\renewcommand*{\glsgroupheading}[1]{}%
% Main (level 0) entries displayed in a row:
\renewcommand*{\glossaryentryfield}[5]{%
\glstarget{##1}{\textbf{##2}}% Name
& ##3% Description
& ##5% Page list
\\% end of row
}%
% Sub entries treated the same as level 0 entries:
%\renewcommand*{\glossarysubentryfield}[6]{%
%\glossaryentryfield{##2}{##3}{##5}{##6}}%
%% Nothing between groups:
%\renewcommand*{\glsgroupskip}{}%
}
\newglossarystyle{tabx4col}{%
% put the glossary in a longtable environment:
\renewenvironment{theglossary}%
{\begin{longtable}{L{0.1\textwidth}L{0.1\textwidth}p{0.55\textwidth}R{0.2\textwidth}}}%
{\end{longtable}}%
% Set the table's header:
\renewcommand*{\glossaryheader}{}%
% No heading between groups:
\renewcommand*{\glsgroupheading}[1]{}%
% Main (level 0) entries displayed in a row:
\renewcommand*{\glossaryentryfield}[5]{%
\glstarget{\textbf{##1}}{\textbf{##2}}% Name
& $[$\glsentryuseri{##1}$]$% Units
& ##3% Description
& ##5% Page list
\\% end of row
}%
% Sub entries treated the same as level 0 entries:
%\renewcommand*{\glossarysubentryfield}[6]{%
%\glossaryentryfield{##2}{##3}{##5}{##6}}%
%% Nothing between groups:
%\renewcommand*{\glsgroupskip}{}%
}
これにより、次の画像に示すような出力が得られます。
スクリーンショットを編集して、揃えたいテキストの灰色の線をいくつか追加します (R
ページリストで使用される固定幅の不揃いな列の列指定子を使用)。主に用語集全体を表示したいです\textwidth
。すべての列を変数に依存させ、値を 1 まで追加することで、最終的にヘッダー行と同じ幅のテーブルが得られると考えました\textwidth
。また、テーブル環境として tabularx を使用することも試みましたが、失敗しました (マクロ コマンド (など) を使用しても\tabularx \endtabularx
)。MWE (http://pastebin.com/McqsTPga(もはやそれほど最小限ではないかもしれませんが)そこでは、問題を自分で確認できます。
少し長い投稿で申し訳ありませんが、これは本当に私を悩ませています。
答え1
「すべての列を変数に依存させ\textwidth
、値を1まで加算することで、最終的にヘッダー行と同じ幅のテーブルが得られると考えました。」これはほぼ正しいですが、自動的に追加される列間のスペースを忘れています。@{}
列の指定でそれを抑制することができます。テーブルを次のように指定すると、
\newglossarystyle{tabx3col}{%
\renewenvironment{theglossary}%
{\begin{longtable}{@{}p{0.2\textwidth}@{}p{0.6\textwidth}@{}>{\raggedleft}p{0.2\textwidth}@{}}}%
...
そして
\newglossarystyle{tabx4col}{%
\renewenvironment{theglossary}%
{\begin{longtable}{@{}p{0.12\textwidth}@{}p{0.08\textwidth}@{}p{0.6\textwidth}@{}>{\raggedleft}p{0.2\textwidth}@{}}}%
...
配置は希望どおりになります。説明の前後の列間スペースを抑制しない方がよいかもしれません。その場合は、説明列 (または他の列) を 24 ポイント狭くする必要があります。
答え2
次のように配置\usepackage{calc}
を指定できますlongtable
\begin{longtable}{
@{} % suppress the space at the left
L{0.1\textwidth-\tabcolsep}
L{0.1\textwidth-2\tabcolsep}
p{0.6\textwidth-2\tabcolsep}
R{0.2\textwidth-\tabcolsep}
@{} % suppress the space at the right
}
最も幅の広い列の列間スペースを削除したい場合があります。この場合
\begin{longtable}{
@{} % suppress the space at the left
L{0.1\textwidth}
L{0.1\textwidth}
p{0.6\textwidth-6\tabcolsep}
R{0.2\textwidth}
@{} % suppress the space at the right
}
各列の前後には\tabcolsep
広いスペースが続きます。列は 4 つあるので、左端と右端のスペースを抑制した後、6 つのスペースが残ります。