
ВНИМАНИЕ: Это дополнительный вопрос кОтображение длинных записей (подобно первым использованным) для записей, не являющихся аббревиатурами.
КакмафпВ другом посте предлагалось, чтобы я пошел дальше и определил свои собственные стили глоссария (вместе с некоторыми спецификаторами столбцов), чтобы решить проблему единиц (используя поле 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
спецификатор столбцов для столбцов фиксированной ширины raggedright, используемых в списке страниц). В основном я хотел бы иметь весь глоссарий \textwidth
. Я думал, что сделав каждый столбец зависимым от \textwidth
переменной и добавив значения до 1, я получу таблицу, которая в конечном итоге будет такой же широкой, как и заголовок. Я также пробовал использовать 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}@{}}}%
...
выравнивание получается как надо. Возможно, лучше не подавлять межколоночное пространство до и после описания. Тогда вам придется сделать колонку описания (или любую другую колонку) уже на 24pt.
решение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
широкий пробел; у вас четыре столбца, поэтому после удаления левого и правого пробелов их остается шесть.