현재 xltabular에서 tabularray로 마이그레이션 중입니다. 그 일환으로 기호 목록 및 약어 목록(동일한 스타일)에 대한 사용자 정의 용어집 스타일을 적용하고 싶습니다.
이것은 내 이전 코드입니다.
% tables
\usepackage{booktabs}
\usepackage{multirow}
\usepackage{xltabular}
\usepackage{tabularray}
\addto\captionsngerman{
\DefTblrTemplate{contfoot-text}{default}{Fortsetzung auf der n\"achsten Seite}
\DefTblrTemplate{conthead-text}{default}{(fortgesetzt)}
}
% glossaries
\usepackage[
abbreviations,
nonumberlist,
record,
symbols
]{glossaries-extra}
\GlsXtrLoadResources[
src=glossaries,
not-match={entrytype=symbol}
]
\GlsXtrLoadResources[
selection=all,
src=glossaries,
type=symbols,
match={entrytype=symbol}
]
\newglossarystyle{customlong}{
\setglossarystyle{long}
\renewenvironment{theglossary}{\xltabular{\textwidth}{llX}}{\endxltabular}
\renewcommand{\glossentry}[2]{
\glsentryitem{##1}\textbf{\glstarget{##1}{\glossentryname{##1}}} & \multicolumn{2}{X}{\glossentrydesc{##1}}\\
}
\renewcommand{\subglossentry}[3]{
& \glssubentryitem{##2}\glstarget{##2}{\strut} & \glossentrydesc{##2}\\
}
\ifglsnogroupskip
\renewcommand*{\glsgroupskip}{}%
\else
\renewcommand*{\glsgroupskip}{\\}%
\fi
}
나는 다음을 제거하고 싶습니다 :
\usepackage{booktabs}
\usepackage{multirow}
\usepackage{xltabular}
그러므로 적응해야 합니다 \newglossarystyle{customlong}{...}
. 내 현재 상태는 다음과 같습니다.
\newglossarystyle{customlong}{
\setglossarystyle{long}
\renewenvironment{theglossary}{
\begin{longtblr}[
entry=none,
label=none
]{
colspec={llX},
hspan=minimal,
stretch=1,
width=\textwidth
}
}{\end{longtblr}}
\renewcommand{\glossentry}[2]{
\glsentryitem{##1}\textbf{\glstarget{##1}{\glossentryname{##1}}} & \SetCell[c=2]{l}\glossentrydesc{##1}\\
}
\renewcommand{\subglossentry}[3]{
& \glssubentryitem{##2}\glstarget{##2}{\strut} & \glossentrydesc{##2}\\
}
\ifglsnogroupskip
\renewcommand*{\glsgroupskip}{}%
\else
\renewcommand*{\glsgroupskip}{\\}%
\fi
}
'잘못된 정렬 탭 문자 &.'로 인해 컴파일이 실패합니다. in and &
로 바꾸면 컴파일은 성공하지만 출력에는 분명히 '&'가 포함됩니다.\&
\renewcommand{\glossentry}[2]{...}
\renewcommand{\subglossentry}[3]{...}
이 오류는 tabularray 패키지 설명서의 다음 내용과 관련이 있다고 가정합니다.
"전통적인 테이블 형식 환경과 달리 tabularray 환경은 l3regex로 테이블 본문을 분할할 때 모든 & 및 \를 확인해야 합니다. 그리고 \NewTableCommand로 정의된 테이블 명령 안에 셀 텍스트를 넣을 수 없습니다. 하지만 외부 키 확장을 사용하여 tabularray는 테이블 본문을 분할하기 전에 지정된 매크로의 모든 항목을 한 번 확장합니다. \NewDocumentCommand로 정의된 명령은 확장할 수 없습니다. (https://ftp.gwdg.de/pub/ctan/macros/latex/contrib/tabularray/tabularray.pdf, p. 30)
이는 확장 \renewcommand{\glossentry}[2]{...}
하고 \renewcommand{\subglossentry}[3]{...}
. 나는 그것을 달성하는 방법을 모른다. 누군가 도와줄 수 있나요?
미리 감사드립니다.
편집 1: M(N)WE
이것은 '&'를 인쇄하는 현재 코드입니다. 관련없는 일부 내용이 삭제되었습니다. 나는 latexmk
.
main.tex
\documentclass{scrbook}
\usepackage{tabularray}
\usepackage[
abbreviations,
nonumberlist,
record,
symbols
]{glossaries-extra}
\GlsXtrLoadResources[
src=glossaries,
not-match={entrytype=symbol}
]
\GlsXtrLoadResources[
selection=all,
src=glossaries,
type=symbols,
match={entrytype=symbol}
]
\newglossarystyle{customlong}{
\setglossarystyle{long}
\renewenvironment{theglossary}{
\begin{longtblr}[
entry=none,
label=none
]{
colspec={llX},
hspan=minimal,
stretch=1,
width=\textwidth
}
}{\end{longtblr}}
\renewcommand{\glossentry}[2]{
\glsentryitem{##1}\textbf{\glstarget{##1}{\glossentryname{##1}}} \& \SetCell[c=2]{l}\glossentrydesc{##1}\\
}
\renewcommand{\subglossentry}[3]{
\& \glssubentryitem{##2}\glstarget{##2}{\strut} \& \glossentrydesc{##2}\\
}
\ifglsnogroupskip
\renewcommand*{\glsgroupskip}{}%
\else
\renewcommand*{\glsgroupskip}{\\}%
\fi
}
\newglossarystyle{customindex}{
\setglossarystyle{index}
\renewcommand{\glstreeitem}{\parindent0pt\par}
\renewcommand{\glstreepredesc}{\par\glstreeitem\parindent40pt\hangindent40pt}
}
\begin{document}
\frontmatter
\printunsrtabbreviations[style=customlong]
\printunsrtsymbols[style=customlong]
\mainmatter
\appendix
\backmatter
\printunsrtglossary[style=customindex]
\end{document}
용어집.bib
@entry{gls-uml,
name = {Unified Modeling Language},
description = {\enquote{A specification defining a graphical language for visualizing, specifying, constructing, and documenting the artifacts of distributed object systems.}\footnote{\url{https://www.omg.org/spec/UML}, aufgerufen am 20.02.2023}.}
}
@abbreviation{auv,
description = {\gls{gls-auv}},
short = {AUV},
long = {Autonomous Underwater Vehicle}
}
@symbol{v-desired,
name = {\ensuremath{\overrightarrow{v_{desired}}}},
description = {Wunschgeschwindigkeit}
}
.latexmkrc
@default_files = ('main');
$pdf_mode = 4;
$dvi_mode = 0;
$postscript_mode = 0;
$lualatex = 'lualatex -synctex=1 -interaction=nonstopmode %O %S';
push @generated_exts, 'glstex', 'glg';
$clean_ext .= ' %R.bbl %R.glstex %R.lol %R.run.xml %R-1.glstex ';
add_cus_dep( 'aux', 'glstex', 0, 'run_bib2gls' );
sub run_bib2gls {
if ($silent) {
my $ret = system "bib2gls --silent --group $_[0]";
}
else {
my $ret = system "bib2gls --group $_[0]";
}
my ( $base, $path ) = fileparse( $_[0] );
if ( $path && -e "$base.glstex" ) {
rename "$base.glstex", "$path$base.glstex";
}
# Analyze log file.
local *LOG;
$LOG = "$_[0].glg";
if ( !$ret && -e $LOG ) {
open LOG, "<$LOG";
while (<LOG>) {
if (/^Reading (.*\.bib)\s$/) {
rdb_ensure_file( $rule, $1 );
}
}
close LOG;
}
return $ret;
}