Переосмислення \ розділу означає \ секція *

aidangallagher4 10/04/2017. 3 answers, 245 views
macros

Мені шкода, якщо це дублікат, однак я ніби не міг знайти точну відповідь на це скрізь. Я ввожу папір в LaTeX, і для полегшення набору тексту (хоча і не так вже й точно), я хотів би перевизначити команду \section щоб не вказати номери секцій (тобто така ж, як \section* ).

Спочатку я наївно намагався \renewcommand{\section}{\section*} , але, звичайно, це призвело до нескінченної рекурсії (оскільки \section* визначається за допомогою \section ), так і не спрацював. Далі, зробивши трохи досліджень, виявилося, що я можу обійти це, роблячи (у преамбулі):

\let\oldsection\section*
\renewcommand{\section}{\oldsection} 

Однак це повернуло помилку:

! LaTeX Error: Missing \begin{document}.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H   for immediate help.
 ...                                              

l.13 \let\oldsection\section* 

Я вважаю, що помилка пов'язана з використанням \section* у команді \let allow, але я не знаю точно, що неправильно.

Я знаю, що зможу розібрати це, зробивши це:

\let\oldsection\section
\renewcommand{\section*}{\oldsection} 

однак я відчуваю, що це не в дусі лінивості, яке мене почало в цьому, і я хотів би (якщо це можливо) рішення, яке досі дає мені можливість використовувати \section що є оптимальним.

Я підозрюю, що рішення може полягати в перевизначенні правил нумерації для \section (що було б добре, але не ідеально), однак будь-яка допомога дуже цінується!

5 Comments
Christian Hupfer 10/04/2017
* насправді не відноситься до імені макросу \section , це аргумент для \section тут, а \let\origsection\section* залишає * у потоці введення, викликаючи помилку
4 Ulrike Fischer 10/04/2017
Чому б тобі просто не змінювати протилежне secnumdepth?
1 David Carlisle 10/04/2017
@UlrikeFischer ви можете опублікувати це як відповідь :-)
Ulrike Fischer 10/04/2017
@ DavidCarlisle Готово.
1 Werner 10/04/2017
Це XY-проблема : Різне питання, з аналогічним рішенням як видалити нумерацію з розділу та підсекції (можливий дубльований файл).

3 Answers


Christian Hupfer 10/04/2017.

* не є частиною назви макросу, це аргумент ефективний - макроси, які мають версію із зірочкою, використовують \@ifstar щоб перевірити, чи є наступний токен * та гілкою в інший макрос, який виконує очікувану операцію для версії із зірочкою та інший для макросів з незміром.

\let\origsection\section зберігає старе визначення, версію тут діє
завжди для \oldsection* версії.

\documentclass{article}

\let\origsection\section

\makeatletter

\renewcommand{\section}{%
  \@ifstar{%
    \origsection*%
  }{%
    \origsection*%
  }%
}

\makeatother

\begin{document}

\section{Foo}

\section*{Foo again}

\end{document} 
5 comments
aidangallagher4 10/04/2017
Дуже спасибі це те, що я шукав; чи можна було б пояснити, як цей код працює для додаткових кедосів?
alephzero 10/04/2017
Це "працює", але встановлення secnumdepth (як і в іншому відповідь) є кращим способом вирішення вашої проблеми.
Christian Hupfer 10/04/2017
@alephzero: better це бачення думки ;-) Моя версія корисна для випадків, коли secnumdepth не має на увазі, тобто коли інші команди, окрім макросів структури, повинні поводитися як їх зірочкова версія
Christian Hupfer 10/04/2017
@ aidangallagher4: будь ласка, не приймайте відповіді. Я, скоріше, видалив мою відповідь, ніж тримав його таким чином
aidangallagher4 10/04/2017
На ризик участі в цьому чітко партизанському питанні я збираюся дотримуватися моїх знарядь і зберігати вашу відповідь як вибраний, тому що з причин, з якими ви і я вже виклали, я вважаю, що це найкраще відповідає моєму питанню . Питання, пов'язані з естетикою, дуже суб'єктивні, і, безсумнівно, кожна людина має свою думку, однак, враховуючи, що це моє питання (хоча моя кількість очок блідий порівняно з будь-яким іншим тут), я збираюся прийняти виконавче рішення тут

Ulrike Fischer 10/04/2017.

Я хотів би встановити secnumdepth якщо я хочу безлімітні розділи:

\documentclassNO 

введіть опис зображення тут

2 comments
aidangallagher4 10/04/2017
Підніміться за найкоротший шлях!
6 David Carlisle 10/04/2017
@ aidangallagher4 це теж рішення, яке слід прийняти. (Християнин не проти відмовитися від свого тика до леді :-)

koleygr 10/04/2017.

Спробуйте це:

https://tex.stackexchange.com/a/380116/120578

Спеціально для ваших потреб це може бути як:

\let\oldsection\section
\makeatletter
\def\msection{%
\@ifstar{\@Starred}{\@nonStarred}%
}
\def\@Starred{%
\@ifnextchar[%
{\GenericWarning{}{Warning: A starred section can not have optional parameters. I am going to ignore them!}\@StarredWith}%
{\@StarredWithout}%
}      
\def\@StarredWith[#1]#2{%
\oldsection*{#2}%
}
\def\@StarredWithout#1{
\oldsection*{#1}%
}
\def\@nonStarred{%
\@ifnextchar[%
{\@nonStarredWith}%
{\@nonStarredWithout}%
}
\def\@nonStarredWith[#1]#2{%
\oldsection*{#2}%
}
\def\@nonStarredWithout#1{%
\oldsection*{#1}%
}
\makeatother 
2 comments
Christian Hupfer 10/04/2017
Чи не так складно?
koleygr 10/04/2017
@ ChristianHupfer Я щойно змінив код посилання. Я міг би просто залишити нестандартну і викликати знімок ... Але я залишив це так, якщо хтось хоче зробити щось більше в будь-якому випадку (відрізняється для зірочливої ​​або нестандартної тощо). Вона має ту перевагу, що приймає розділ Starred з необов'язковим аргументом (цей OP, як видається, потрібний), мій код просто ігнорує його, але може використовувати його для fancyhead або будь-якого іншого. Тому я думаю, що код посилання не надто складний, але майже мінімальний необхідний, що дає можливість подбати про всі можливості і робити все, що завгодно, з розділами.

HighResolutionMusic.com - Download Hi-Res Songs

1 Martin Garrix

Yottabyte flac

Martin Garrix. 2018. Writer: Martin Garrix.
2 Dyro

Latency flac

Dyro. 2018. Writer: Martin Garrix;Dyro.
3 Martin Garrix

Access flac

Martin Garrix. 2018. Writer: Martin Garrix.
4 Alan Walker

Diamond Heart flac

Alan Walker. 2018. Writer: Alan Walker;Sophia Somajo;Mood Melodies;James Njie;Thomas Troelsen;Kristoffer Haugan;Edvard Normann;Anders Froen;Gunnar Greve;Yann Bargain;Victor Verpillat;Fredrik Borch Olsen.
5 Sia

I'm Still Here flac

Sia. 2018. Writer: Sia.
6 Bradley Cooper

Shallow flac

Bradley Cooper. 2018. Writer: Andrew Wyatt;Anthony Rossomando;Mark Ronson;Lady Gaga.
7 Cardi B

Taki Taki flac

Cardi B. 2018. Writer: Bava;Juan Vasquez;Vicente Saavedra;Jordan Thorpe;DJ Snake;Ozuna;Cardi B;Selena Gomez.
8 Blinders

Breach (Walk Alone) flac

Blinders. 2018. Writer: Dewain Whitmore;Ilsey Juber;Blinders;Martin Garrix.
9 Halsey

Without Me flac

Halsey. 2018. Writer: Halsey;Delacey;Louis Bell;Amy Allen;Justin Timberlake;Timbaland;Scott Storch.
10 Lady Gaga

I'll Never Love Again flac

Lady Gaga. 2018. Writer: Benjamin Rice;Lady Gaga.
11 Mako

Rise flac

Mako. 2018. Writer: Riot Music Team;Mako;Justin Tranter.
12 Kelsea Ballerini

This Feeling flac

Kelsea Ballerini. 2018. Writer: Andrew Taggart;Alex Pall;Emily Warren.
13 Dewain Whitmore

Burn Out flac

Dewain Whitmore. 2018. Writer: Dewain Whitmore;Ilsey Juber;Emilio Behr;Martijn Garritsen.
14 Avril Lavigne

Head Above Water flac

Avril Lavigne. 2018. Writer: Stephan Moccio;Travis Clark;Avril Lavigne.
15 Lady Gaga

Look What I Found flac

Lady Gaga. 2018. Writer: DJ White Shadow;Nick Monson;Mark Nilan Jr;Lady Gaga.
16 Billie Eilish

When The Party's Over flac

Billie Eilish. 2018. Writer: Billie Eilish;FINNEAS.
17 Bradley Cooper

Always Remember Us This Way flac

Bradley Cooper. 2018. Writer: Lady Gaga;Dave Cobb.
18 Rita Ora

Let You Love Me flac

Rita Ora. 2018. Writer: Rita Ora.
19 Diplo

Electricity flac

Diplo. 2018. Writer: Diplo;Mark Ronson;Picard Brothers;Wynter Gordon;Romy Madley Croft;Florence Welch.
20 Charli XCX

1999 flac

Charli XCX. 2018. Writer: Charli XCX;Troye Sivan;Leland;Oscar Holter;Noonie Bao.

Related questions

Hot questions

Language

Popular Tags